繁体   English   中英

为什么 UINT_MAX + 3 总是等于 2?

[英]why does UINT_MAX + 3 always equal 2?

有人能帮我吗,我写了一个小C程序来输出UINT_MAX + 3的值,并在mac和ubuntu上测试了它,它一直给我2

谢谢

这是它在 th C 标准中定义的方式。 无符号整数具有模算术。 将任何类型的最大无符号整数加 1 结果为 0。加 2 得到 1。依此类推。

同样,从 0 中减去 1 会得到该无符号整数类型的最大值。

如果您确实想将 3 添加到 UINT_MAX 并获得更大的值,那么您需要使用比为您的编译器定义 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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM