八进制输出问题?各位大虾帮忙看看

meihuakai 2009-10-06 02:19:01
请问下各位大虾,
我定义short型的变量a赋初值为-2,执行cout<<oct<<a<<endl;还有printf("%o",a);为什么输出的结果是177776和377777776?
...全文
83 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
BABY 2009-10-11
  • 打赏
  • 举报
回复
MARK!
ACgirl 2009-10-06
  • 打赏
  • 举报
回复
`````
meihuakai 2009-10-06
  • 打赏
  • 举报
回复
我明白了,在计算机内部short是16位的,而计算机存数据是存的补码,-2的原码是0000 0000 0000 0010
取反是1111 1111 1111 1101 求补码加1,变为1111 1111 1111 1110而八进制是三位三位一输出,故为
1 111 111 111 1111 110即177776同理printf把short当做32位,提问后在底下看了下计算机组成的书明白了,多谢各位大虾的指导
wanjingwei 2009-10-06
  • 打赏
  • 举报
回复
printf("%o",a);输出的好像是无符号的八进制
meihuakai 2009-10-06
  • 打赏
  • 举报
回复
没有啊,就是short型的
失落的凡凡 2009-10-06
  • 打赏
  • 举报
回复
是不是定义成unsigned short型了?

69,382

社区成员

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

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