有人可以帮助我,我写了一个小C
程序来输出UINT_MAX + 3的值,并在mac和ubuntu上测试它,它一直给我2
谢谢
答案 0 :(得分:4)
这是在C标准中定义的方式。无符号整数具有模运算。将任何类型的最大无符号整数递增1会导致0.递增2会产生1.依此类推。
出于同样的原因,从0减去1会得到无符号整数类型的最大值。
答案 1 :(得分:0)
如果您确实要向UINT_MAX添加3并获得更大的值,则需要使用比为编译器定义UINT_MAX的类型更大的整数类型。不幸的是,你这样做的方式取决于你的编译器。例如,在Windows上使用Visual C ++,int是32位,因此UINT_MAX是4,294,967,295。在Visual C ++中,使用类型__int64指定64位整数,因此编写:
unsigned __int64 n;
n=(unsigned __int64)UINT_MAX+3;
printf("%I64i\n",n);
...将打印所需的值,4,294,967,298。