正如标题所示,我对于 unsigned int
(或者像 NSUInteger
, u_int_blah
这样的东西,但我猜这些都是同一种类型的 typedef
)的工作方式很好奇。例如,当它们的值小于零时,会引发异常吗?会出现错误吗?其中一个具体的例子是间接地将值设置为一个负数。
for (unsigned int x = 5; x > -10; x--) {
// will x ever reach below zero, or will the loop terminate
}
另一种间接设置它的方式是让用户输入。
printf("Enter a number");
unsigned int x;
scanf("%ud", &x); // user enters something like -29
实际上,我有三个问题。为什么无符号整数不能被赋值为负数(unsigned int x = -3
)。这种行为是如何实现的(由编译器还是其他方式)。当无符号整数被直接或间接地赋值为负值时会发生什么。数据会损坏吗?会溢出吗?
谢谢