首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否可以指定在C/C++中是封顶整数还是溢出整数?

我是否可以指定在C/C++中是封顶整数还是溢出整数?
EN

Stack Overflow用户
提问于 2013-05-26 17:53:36
回答 3查看 639关注 0票数 2

我能选择在C/C++中是封顶还是溢出整数值吗?或者它们是依赖于编译的吗?

EN

回答 3

Stack Overflow用户

发布于 2013-05-26 18:23:52

你所说的“封顶”被称为“饱和度”。数字信号处理器(DSP)通常支持硬件饱和,但大多数微处理器自然会溢出和回绕。支持DSP扩展的处理器,例如MMX,也支持饱和。

饱和的语言支持通常是通过编译器扩展、内部函数和库来实现的。在C++中,也许可以为饱和算术类型创建一个模板类。

从我对this question的回答

ISO/IEC JTC1 SC22 WG14 N1169 (编程语言-支持嵌入式处理器的C扩展)为饱和数据类型指定了_Sat类型限定符。我从未尝试在任何编译器中使用它,但它包含在GCC 4.x documentation中。

VC++ 2003及更高版本支持允许饱和算法的MMX intrinsics

请注意,在没有硬件支持饱和算术的处理器上,使用它可能会影响性能。

票数 3
EN

Stack Overflow用户

发布于 2013-05-26 18:05:28

“溢出”无符号整数类型是C和C++标准规定的定义良好的行为。(对于吹毛求疵的人:我知道它在技术上没有被定义为溢出,但这不是大多数人真正感兴趣的定义。)

什么事都有可能发生。

票数 1
EN

Stack Overflow用户

发布于 2013-05-26 21:15:43

正如James已经说过的,它的带符号整数溢出是未定义的行为。有关如何处理它的一些想法,请参阅此处的https://www.securecoding.cert.org/confluence/display/seccode/INT32-C.+Ensure+that+operations+on+signed+integers+do+not+result+in+overflow

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16758082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档