鱼C论坛

 找回密码
 立即注册
查看: 2002|回复: 6

格式输入输出

[复制链接]
发表于 2016-6-20 08:51:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在《小甲鱼零基础入门学习C语言》中“第三章  顺序程序设计”PPT第16页有如下格式输入输出问题:
当在编辑器中输入以下代码:
void main()
{
        int a=-10;
        printf("a=% o\n",a);
}
(其中%与o之间有空格
代码输出结果为:
请问a的输出值为什么不是-12呢?
QQ截图20160620084816.png
4{]%3P{W4T5G]JC7(B5OR.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-20 09:26:12 | 显示全部楼层

楼主,你使用 %o 是以8进制输出。
八进制和十六进制都是补码形式输出 (这是我理解的),所以输出了这个东西。

把上边那个数字 转换成16进制更容易看出来。FFFFFFF6 - 也就是-10的补码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-6-20 23:19:02 | 显示全部楼层
n0noper 发表于 2016-6-20 09:26
楼主,你使用 %o 是以8进制输出。
八进制和十六进制都是补码形式输出 (这是我理解的),所以输出了这个东 ...

soga,理解啦!赞!谢谢你~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-21 08:41:22 | 显示全部楼层
f904399233 发表于 2016-6-20 23:19
soga,理解啦!赞!谢谢你~


如果解决了,记得评分 关帖哟~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-22 11:41:26 | 显示全部楼层
不知道楼主懂不懂补码

-5的补码是 先求5的二进制代码,如果是int类型占32个字节,那就是00000000000000000000000000001010

按位取反后为
11111111111111111111111111110101
末尾加1
11111111111111111111111111110110  这个就是-5的补码

接下来把二进制代码转化为八进制,从右向左,每3个位一组,不够位数前面取0

           011,111,111,111,111,111,111,111,111,110,110,
转        ↓    ↓   ↓   ↓   ↓    ↓   ↓   ↓    ↓      ↓   ↓
化        3     7     7    7    7      7     7   7     7      6      6






就是这样,懂不懂??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-22 14:48:50 | 显示全部楼层
学习电脑 发表于 2016-6-22 11:41
不知道楼主懂不懂补码

-5的补码是 先求5的二进制代码,如果是int类型占32个字节,那就是000000000000000 ...

理解啦~3Q
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-22 15:49:06 | 显示全部楼层
那就好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 04:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表