【发布时间】:2012-08-07 20:04:11
【问题描述】:
我开始使用 C 进行编程,但在理解我得到的一些结果时遇到了问题。我把代码贴在这里:
#include <stdio.h>
unsigned int main(void)
{
unsigned int x = 0;
printf("%u\n",x-1);
return 0;
}
终端返回 4.294.967.295,我不明白为什么。我知道这个值是unsigned int 的最大值,但实际上我期待编译器发出一些警告,说我必须使用int 类型而不是unsigned int,因为结果是否定的。无论如何,有人可以帮助我吗?
【问题讨论】:
-
@Mihai - 这不是下溢吗?
-
我现在明白了!谢谢大家! :)
-
技术上,无符号算术永远不会溢出(因为它是按照标准以 2^N 为模执行的)。
标签: c types int unsigned-integer