任何人都可以提供一些代码示例,当使用fwrapv vs编译时,它们的行为会有所不同.
它说--fwrapv应该"假设加法,减法和乘法的带符号算术溢出,使用二进制补码表示包装."
但每当我尝试溢出时,结果与fwrapv相同或不同.
我正在学习计算机体系结构,并决定尝试乘法溢出。观察到 的溢出INT_MAX * INT_MAX,但我不确定为什么这会在 C/C++ 中给出乘积 1。
#include <stdio.h>
#include <limits.h>
int main()
{
int num = INT_MAX;
printf("%0x\n", num); //stdout is 0x7fffffff
printf("%d\n", num * num); //stdout is 1
return 0;
}
Run Code Online (Sandbox Code Playgroud)