我知道unsigned int的范围是0<= I <= 2^32-1
但是,当我在 C(visual 2015) 中这样输入时
void main(){
unsigned int k = -10;
printf("%d",k);
}
那为什么电脑在屏幕上打印-10?我认为应该有错误。
最佳答案
int
默认存储带符号的数字,这意味着它们的范围可以从 -2,147,483,648 到 2,147,483,647。 unsigned int
意味着您不会使用负数,因此范围要大得多,因为您已经释放了数字中最左边的位,该位通常用于指示它是有符号的(负数) ) 或不。因此,unsigned int
的范围可以是 0 到 4,294,967,295。这也适用于像 char
这样的类型,它们通常从 -128 到 127,当 unsigned
时,char
恰好保存一个字节,或者0 到 255。
当您尝试将有符号值存储到无符号类型时,Visual Studio(和大多数编译器)应该会发出警告。
当您使用 printf("%d",k)
时,%d
告诉 printf()
打印出带符号的 int
。这就是它所做的。如果您希望 printf()
打印出 unsigned int
,则需要使用 printf("%u")
。
关于c - C中int和unsigned int的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41374719/