C语言中unsigned int能显示负数吗?

如图,我在codeblocks中定义了a是一个unsigned int变量,为什么给它赋值-1,能通过编译显示出来?

无符号数和有符号数 在存储上并没有区别 在使用的时候 如果符号不匹配 C会做自动转换
比如 你定义了无符号的a然后赋值一个负数 -1 就等同于
a = (unsigned int)-1;
得到的a值实际上是0xffffffff (取决于编译器,32位编译器为这个值)
如果用%u输出 那么就会输出这个数字对应的10进制值 为2^32-1
但是你用%d输出 就等于
printf("%d", (int)a);
于是又被转回了-1
温馨提示:答案为网友推荐,仅供参考
相似回答