为什么printf("%d,%4u,%lu\n",4294967295u,4294967295u,-1);将输出:-1,4294967295,4294967295
答案:2 悬赏:30
解决时间 2021-12-21 08:32
- 提问者网友:孤笛钟情你
- 2021-12-21 02:16
为什么printf("%d,%4u,%lu\n",4294967295u,4294967295u,-1);将输出:-1,4294967295,4294967295
最佳答案
- 二级知识专家网友:怪咖小青年
- 2021-12-21 02:22
十进制数4294967295,二进制表示1111 1111 1111 1111 1111 1111 1111 1111 也就是32个1
lz的是在VC之类的将int做4字节处理的环境中的结果
将int做4字节处理的话,-1的补码也是1111 1111 1111 1111 1111 1111 1111 1111 32个1
所以"%d,%4u,%lu\n"
第一个按有符号整型数输出,结果当然是-1咯,
%4u,是以最小宽度为4个宽度输出无符号整数,当然是4294967295
第三个也不用说了吧
lz的是在VC之类的将int做4字节处理的环境中的结果
将int做4字节处理的话,-1的补码也是1111 1111 1111 1111 1111 1111 1111 1111 32个1
所以"%d,%4u,%lu\n"
第一个按有符号整型数输出,结果当然是-1咯,
%4u,是以最小宽度为4个宽度输出无符号整数,当然是4294967295
第三个也不用说了吧
全部回答
- 1楼网友:余生继续浪
- 2021-12-21 03:42
因为有符号的十进制数的-1和无符号的十进制数4294967295,在内存里面都是32个1
再看看别人怎么说的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯