c++ - 我可以指定在 C/C++ 中是否限制或溢出整数吗?

标签 c++ c integer overflow

我可以选择在 C/C++ 中限制还是溢出整数值吗?或者那些编译依赖?

最佳答案

您所说的“上限”被称为“饱和”。数字信号处理器 (DSP) 支持硬件饱和是很常见的,但大多数微处理器自然会溢出和环绕。支持 DSP 扩展(例如 MMX)的处理器也支持饱和。

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

来 self 对this question的回答:

ISO/IEC JTC1 SC22 WG14 N1169 (Programming languages - C - Extensions to support embedded processors) specifies a _Sat type qualifier for saturating data types. I have never tried to use it in any compiler, but it is included in the GCC 4.x documentation.

VC++ 2003 onward supports MMX intrinsics that allow saturating arithmetic.

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

关于c++ - 我可以指定在 C/C++ 中是否限制或溢出整数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16758082/

相关文章:

c++ - 将 Boost 适配器与 C++11 lambda 配合使用

c++ - 编译的程序找不到 freeglut.dll

c++ - 以下哪个异常处理代码片段是有效的,为什么

c - 以 0x8 和 0xC 开头的 HRESULT 错误代码有什么区别?

c - pcap 为什么总是 8 字节的数据包...为什么?

rust - 泛化添加无符号和有符号整数类型

c++ - 管道中是否有任何提案允许模板中的任何参数?

c - 如何更改命令提示符窗口的标题

java - 我可以在不使用循环的情况下从Java中的单行输入读取多个整数吗

c# - 可以精确表示为 float / double 的整数范围