黑马程序员技术交流社区
标题:
编程中遇到的进制问题
[打印本页]
作者:
koukou
时间:
2014-6-6 16:58
标题:
编程中遇到的进制问题
在C语言中,书中说用0X表示十六进制 0表示八进制。
1.可是书中当用%x,%o输出时,没有见到前面有0X和0的标志啊? 这是为什么? ,2.再比如我输入时scanf(“%x,%o”,a,b);到底用不用在数值前加上0X,0表示八进制和十六进制,如果不用,怎么区分?
3.看操作系统的时候,书上又说用H,Q分别表示十六进制和八进制,(...)16,()8也可以表示十六和八进制,我有点晕乎,这么多可以一起表示?在C语言中也可用H和Q表示? 还是要分情况?
作者:
a1130003724
时间:
2014-6-6 17:10
按照视屏上教的些就是了 书上讲的也许是编译器不同吧 具体的我也不是很清楚
作者:
icefire1214
时间:
2014-6-7 14:03
本帖最后由 icefire1214 于 2014-6-7 14:07 编辑
试着输入输出几次,我把我的想法写下来。
int i;
scanf("%d",&i);
printf("%x\n",i);
复制代码
运行结果:输入50,输出32;
结论,用printf输出不会加0x,系统按照代码设定的输出格式输出了,写这个代码的程序员也当然知道这个数字是什么格式的,所以没必要加0x;
int i;
scanf("%x",&i);
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,也是书面表示时使用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2