int a;
scanf("%d",&a);
if(a++<9) printf("%d\n",a);
else prinntf("%d\n",a--);
从键盘输入9<回车>,则输出结果是?
答案为什么是10?if条件不是不满足吗?应执行else语句的吧!所以输出结果为啥不是9?
等等,else语句是a--,怎么是+1?是对a-1才对啊
追答不好意思,刚才顺序打错了。。笔记本的鼠标有点坑爹。。 重新发一下 a++ 的含义是先取a的值,再对a进行+1, 你输入9的时候,if(a++<9)这里系统是先取a的值,所以if语句认为a=9, 但是别忘了if中是a++,所以if先把a的值拿去作比较,a的值再被加1,因此进入else语句的时候a的值为10,进入else语句后,执行printf语句,照样,printf语句先取走a的值,显示在了屏幕上,你看到的就是10了。但是别忘了是a--,这里的a会再-1,变为9,如果你再用个printf(“%d”,a); 就可以看到一个9了,
追问你说的我懂,但我搞不明白,if语句不是不成立吗?所以不执行a++这句!
追答if语句是用来做判断的,判断的依据就是括号里的内容,if语句是会执行括号里的所有内容,系统会读到if这条语句,并且根据括号内的内容判断是否执行if()后的内容,所以a++是执行的
我的意思是if不满足条件,应该不执行才对啊
这个我懂,我问的是if语句不是不成立吗?所以不执行a++这句
追答但怎么不执行,a++在上一步,先执行的if(a++<9),语法是这样的,判断的时候就把a++给执行了,
if不是不成立吗?干嘛还要执行a++?
追答不是你理解的那样的
if(a++<9)
相当于
if(a<9);
a++
不管if如何 a++都是会执行的
这是语法规定的,在某些情况下会有用