求助大佬
#include <stdio.h>void main( )
{ int a=-1,b=1,k;
if ((++a<0) && (b--<=0))
printf("%d %d\n",a,b);
else
printf("%d %d\n",b,a);
}
的输出结果是1 0
可是当++a改为a++时,即
#include <stdio.h>
void main( )
{ int a=-1,b=1,k;
if ((a++<0) && (b--<=0))
printf("%d %d\n",a,b);
else
printf("%d %d\n",b,a);
}
时,输出结果就是0 0了。
为什么啊??? 因为a++是先执行这条语句,再给a加值,而++a是先给a加值,再执行语句 第一个++a是先加值,a变为0,然后去判断,而在&&这个判断中,前面不符合的话,系统就不会去判断第二个了,所以b没有减值,按照b,a的输出顺序为1,0
第二个a++是先判断a此时还为-1,符合,然后a加值变为0,然后判断b--,b也是先判断,b此时还为1,不符合,然后b减值变为0,按照b,a的输出顺序为0,0
页:
[1]