注册 登录
编程论坛 新人交流区

刚学c语言的新手,有一个习题请大家指教

C1014159 发布于 2007-10-22 17:41, 741 次点击
#include "stdio.h"
main()
{
int m=0xabc,n=0xabc;
m-=n;
printf("%#x\n",m);
}


这个程序,按照语法格式,运行后应该显示为:0x0,是不是?
但为什么实际运行后显示为:0
请指点!谢谢!
25 回复
#2
xueze2007-10-22 18:14
这还叫新手啊? 哥们学了一年了 对于你这题目 还是拿起来 放不下~~
#3
太空飞鱼2007-10-22 18:42
版本就这样
#4
老六2007-10-22 18:46

我看我才是新手 呵呵.....

#5
rayxiang2007-10-22 19:20
m-=n 是什么意思哦
#6
Kid_X2007-10-22 19:20
牛啊
#7
daniel_zhang2007-10-22 19:44
为什么定义整数要用0Xabc呢?
#8
lemon75422007-10-22 21:29
回复:(rayxiang)m-=n 是什么意思哦
m=m-n;
#9
wang417415592007-10-22 21:31
轻轻的我来了
正如我轻轻地走
我再次作诗一首
将在不是新手
#10
绝地天使2007-10-22 21:46

0的十六进制表示是什么

#11
TLZL2007-10-22 22:53

0x表示是十六进制的数,后面的ABCDEF分别表示十、十一、十二、十三、十四、十五
m\n都是十六进制数 0xabc相对应的十进制数为2748
(oxabc是十六进制数,0123是八进制数;)
m-=n;相当于m=m-n;(-=称为自反赋值运算)
m=2748-2748
所以m=0

最后,printf("%X\n",m);意即将m按%X\n(%X\n表示按十六进制输出,并换行,0的对应十六进制即0),所以屏幕输出0 换行

#12
blackboy2007-10-23 22:17
回复:(绝地天使)0的十六进制表示是什么
0000
#13
yanlei7772007-10-24 00:07
明白 ! 又学到了点东西
#14
苦中求乐2007-10-27 22:30

#15
chuxuezhe172007-10-27 22:36

十六进制输出的时候好象并不用0x

#16
but2007-10-28 02:42
呵呵    真是不简单啊!!~!~
#17
otacon2007-10-28 13:41

十六进制输出0的时候好象并不用0x

#18
zjafjf2007-10-28 14:31
000000
#19
yingduasan192007-10-28 14:47
在TC中,十六进制的显示都是这样.
比如:
c=255;
printf("%x",c);

结果肯定是 :ff

如果非要显示0xff.可以这样.

printf("0x%x",c);

试一试!!
#20
yingduasan192007-10-28 14:54
回复:(C1014159)刚学c语言的新手,有一个习题请大家...
另:爱听听,不听当放屁:

学C语言不要老是追求解决这些边\卡\吊的问题.扎扎实实的学一下基本的东西.
#21
寒天雪地2007-10-28 15:02
运行了各种不同的情况,当为0时,输出时前导符0x被省了。应该为默认的输出形式吧!
#22
yanligangylg2007-10-28 15:57
回复:(老六)我看我才是新手 呵呵.....[em13]
m-=n  也可以看做是m=m-n 同样 m+=n可以看作m=m+n
#23
cout_19872007-10-28 16:10
回复:(绝地天使)0的十六进制表示是什么
0x0  应该是
#24
cout_19872007-10-28 16:13
回复:(C1014159)刚学c语言的新手,有一个习题请大家...
printf("%#x\n",m);
这一句
%#是不是就是十进制的
#25
lilin4444mol2007-10-28 16:14
晕了
#26
bcvg_ts2007-10-28 16:53
回复:(yingduasan19)在TC中,十六进制的显示都是这样...
哎。。。
学习语言就要注意细节问题
要不你学什么??
我记得那个0的八进制,十六进制都是直接输出0的
不用在前面加0x或是0
1