一道不会的小题~~~

[复制链接]
查看11 | 回复3 | 2009-2-11 08:27:51 | 显示全部楼层 |阅读模式
int x=-10;
printf("%x,%o",x,x);
谁知道正确答案并给我详细解释,谢谢~~~~

回复

使用道具 举报

千问 | 2009-2-11 08:27:51 | 显示全部楼层
这个涉及到数制转换问题了,在32位编译系统上是这样的10的2进制表示是0....0(前面28个0)1010-10的2进制表示:取反加1,变为1....1(28个1)0110也就是16进制的fffffff6和8进制的37777777766...
回复

使用道具 举报

千问 | 2009-2-11 08:27:51 | 显示全部楼层
不懂不要瞎说在32位编译系统上,输出结果如下:fffffff6,37777777766%x,%o对应的输出格式如下:%o 有符号8进制整数 %x 无符号的16进制数字,并以小写abcdef表示你将-10进行有符号8进制转换和无符号16进制转换就明白了...
回复

使用道具 举报

千问 | 2009-2-11 08:27:51 | 显示全部楼层
int x=-10;为把-10赋给整型x。printf("%x,%o",x,x); 为输出x和o,它们的值是-10,因为你已提前给x赋值了。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行