负数如何输出成八进制数?

mikimon 2004-12-10 09:56:26
如下:

int a=-1;
printf("a=%o",&a);

请说明如何转换成八进制的!
...全文
475 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
idler 2004-12-10
  • 打赏
  • 举报
回复
楼主输出成8进制的目的是什么?
如果是为了看机内码,那么强制类型转换成(unsigned int)即可。
如果是为了数学上的表达,那么还是-1
mikimon 2004-12-10
  • 打赏
  • 举报
回复
TO楼上大哥;
更正 int a=-1;
printf("%o\n",a);


答案是:177777
mikimon 2004-12-10
  • 打赏
  • 举报
回复
TO樓上大哥;
更正 int a=-1;
printf("%o\n",a);


答案是:177777
szRockie 2004-12-10
  • 打赏
  • 举报
回复
1、问题的源代码中的错误
printf("a=%o",&a);中的第二个参数应该是‘a’,而不是‘&a’,否则输出的是‘a’的地址而不是‘-1’;
2、问题的解答
int在不同系统中的长度可能不同,以 sizeof(int) = 4 的系统为例:
‘a = -1’,则‘a’在机器内部表示为二进制 32 bits 全是 1。
由此:八进制表示时,由二进制低位向高位每 3 bits 为八进制的一位,输出为:‘37,777,777,777’。

###

70,014

社区成员

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

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