c - C中int和unsigned int的区别

标签 c

我知道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/

相关文章:

c - 防止用户跳转到 C 中带有 "enter button"的另一行

c - STM32 上的加速度计事件检测

C 仅导出所需符号(不编辑原始文件)

c - 如何更新矢量化汇编(AVX)中的数组?

c - 如何将 Arduino 读数写入计算机上的文件?

连接宏名称

c - 如何编写与内核模块通信的shell脚本

iphone - XCode 中 C 库的链接问题 - 文件是为不受支持的文件格式构建的,该格式不是正在链接的体系结构

c - 数组中的类型转换

c++ - 有哪些简单的 zlib 教程?