A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© koukou 中级黑马   /  2014-6-6 16:58  /  1301 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在C语言中,书中说用0X表示十六进制 0表示八进制。
1.可是书中当用%x,%o输出时,没有见到前面有0X和0的标志啊? 这是为什么?  ,2.再比如我输入时scanf(“%x,%o”,a,b);到底用不用在数值前加上0X,0表示八进制和十六进制,如果不用,怎么区分?
3.看操作系统的时候,书上又说用H,Q分别表示十六进制和八进制,(...)16,()8也可以表示十六和八进制,我有点晕乎,这么多可以一起表示?在C语言中也可用H和Q表示? 还是要分情况?  

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

2 个回复

正序浏览
本帖最后由 icefire1214 于 2014-6-7 14:07 编辑

试着输入输出几次,我把我的想法写下来。
  1. int i;
  2. scanf("%d",&i);
  3. printf("%x\n",i);
复制代码

运行结果:输入50,输出32;
结论,用printf输出不会加0x,系统按照代码设定的输出格式输出了,写这个代码的程序员也当然知道这个数字是什么格式的,所以没必要加0x;
  1. int i;
  2. scanf("%x",&i);
  3. printf("%d",i);
复制代码

运行结果:输入32,输出50;
结论:不用加0x,输入格式是%x,所以程序会知道键入的32是16进制数,当输出用%d时,就会转成10进制数,所以输出50;

总结:例如%x%d%0这些格式符就是决定了你输入的数字是什么进制的,然后转成16进制数存进内存。而在输出的时候也是按照相应的格式输出出来,不需要再数字前边加0x或0来区分。。。。他们的作用是在平时书写时便于人与人之间交流。比如,我给你说一个数字32,一般默认都为10进制,但是我写成0x32,你就知道这个是16进制数,换成10进制是50;至于H,也是书面表示时使用。

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报 1 0
按照视屏上教的些就是了   书上讲的也许是编译器不同吧      具体的我也不是很清楚
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马