不知火舞还会出吗:高手指点,有如下程序

来源:百度文库 编辑:中科新闻网 时间:2024/05/04 05:37:33
mian()
{
int n;
scanf("%d",&n);
if(n++<5)
printf("%x\n",n);
else printf("%x\n",n--);
}
会输出A

我晕

哦, 那你一定输入的是9吧.
首先你应该知道n++和++n的区别:前者是n加1之前的值,后者是n加1之后的值.
那你的程序的解释是:输入9,(n++)这个式子仍然是9,比5大,执行else语句,但是n已经是10了,输出是(n--)是n减1之前的值,还是10,那10的16进制表示就是A,所以输出是A.

还有就是很有趣的是,在语句里printf("%x",n);中的x是大写的那么输出的16进制的字符也是大写的,如x是小写的,那16进制的字符也是小写的..