C语言中unsigned int还能显示负数
答案:1 悬赏:40 手机版
解决时间 2021-04-07 11:58
- 提问者网友:佞臣
- 2021-04-06 20:03
C语言中unsigned int还能显示负数
最佳答案
- 五星知识达人网友:躲不过心动
- 2021-04-06 20:27
无符号数和有符号数 在存储上并没有区别 在使用的时候 如果符号不匹配 C会做自动转换
比如 你定义了无符号的a然后赋值一个负数 -1 就等同于
a = (unsigned int)-1;
得到的a值实际上是0xffffffff (取决于编译器,32位编译器为这个值)
如果用%u输出 那么就会输出这个数字对应的10进制值 为2^32-1
但是你用%d输出 就等于
printf("%d", (int)a);
于是又被转回了-1
比如 你定义了无符号的a然后赋值一个负数 -1 就等同于
a = (unsigned int)-1;
得到的a值实际上是0xffffffff (取决于编译器,32位编译器为这个值)
如果用%u输出 那么就会输出这个数字对应的10进制值 为2^32-1
但是你用%d输出 就等于
printf("%d", (int)a);
于是又被转回了-1
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯