C程序设计试题汇编.第三章3.26 printf的输出问题

ltolll 2006-06-30 11:41:43
int main()
{
short i=-4;
printf("\ni:dec=%d,oct=%o,hex=%x,uns=%u\n",i,i,i,i);
}
为什么在我机器上输出"i:dec=-4,oct=37777777774,hex=fffffffc,uns=4294967292"
而书上给出的答案是"i:dec=-4,oct=177774,hex=fffc,uns=65532"
...全文
334 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenhu_doc 2006-06-30
  • 打赏
  • 举报
回复
恩, 16位和32位!
ltolll 2006-06-30
  • 打赏
  • 举报
回复
那么书上给出的答案是怎么做出来的呢?
kingerwt 2006-06-30
  • 打赏
  • 举报
回复
是位数的关系吧
chenhu_doc 2006-06-30
  • 打赏
  • 举报
回复
还有是因为这个程序没有涉及到浮点数的操作1
chenhu_doc 2006-06-30
  • 打赏
  • 举报
回复
to: leafsax(aobing)

gcc, vc 都是 基于32位的,肯定,结果是一样的!
leafsax 2006-06-30
  • 打赏
  • 举报
回复
gcc:(cygwin)
i:dec=-4,oct=37777777774,hex=fffffffc,uns=4294967292

vc:(2005)
i:dec=-4,oct=37777777774,hex=fffffffc,uns=4294967292

chenhu_doc 2006-06-30
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int main(void)
{
printf("%d\n", INT_MAX);
getchar();
return 0;
}

//可以在tc和vc上分别调试,看运行结果!
灰太狼 2006-06-30
  • 打赏
  • 举报
回复
机子不一样嘛,因为有的机子是32位的,有的是16位的,而且和编译器也有关系。明白了吗?
chenhu_doc 2006-06-30
  • 打赏
  • 举报
回复
"i:dec=-4,oct=177774,hex=fffc,uns=65532"

书上运行用的可能是tc,所以是16位的,
楼主可能用的是vc吧?
可以比较一下:
ltolll 2006-06-30
  • 打赏
  • 举报
回复
更正:
以16位为例:十进制:-4,由于其是负数所以它在计算机中的二进制表示是其绝对值(也就是正数)的二进制补码
4的原码:二进制:0000,0000,0000,0100
4的反码:二进制:1111,1111,1111,1011
4的补码:二进制:1111,1111,1111,1100(此值即是-4的二进制表示)

转成八进制:177774
转成十六进制:7fff4
转成十进制:65532
ltolll 2006-06-30
  • 打赏
  • 举报
回复
谢谢大家,以下是解题过程
以16位为例:十进制:-4
原码:二进制:1000,0000,0000,0100
反码:二进制:0111,1111,1111,1011
补码:二进制:0111,1111,1111,1100
在补码前加符号位得:二进制:1111,1111,1111,1100(符号位一定要加否则结果不正确)
将补码
转成八进制:177774
转成十六进制:7fff4
转成十进制:65532

这么大的数(没有计算器的情况下)考试时怎么做啊:-(
lanweizc24 2006-06-30
  • 打赏
  • 举报
回复
拿张纸,拿支笔,在纸上画上1000,0000,0000,0000,0000,0000,0000,0100 (32位)然后做补码运算,算好了
再换成o,x进制呗~
如果是16位的话就少画一半就是了
ltolll 2006-06-30
  • 打赏
  • 举报
回复
从解题的角度(当然解题时不可能有电脑更别指望TC和VC,只有脑袋),怎么思考?
leafsax 2006-06-30
  • 打赏
  • 举报
回复
In c/c++ language, the bits of the data type is not defined exactly but the min valid range of the data type.
leafsax 2006-06-30
  • 打赏
  • 举报
回复
vc(64bit)
i:dec=-4,oct=37777777774,hex=fffffffc,uns=4294967292
chenhu_doc 2006-06-30
  • 打赏
  • 举报
回复
是在tc下得到的。。。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧