581314987 发表于 2020-11-19 17:57:52

求助大佬

#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了。
为什么啊???

a327190489 发表于 2020-11-19 18:09:04

因为a++是先执行这条语句,再给a加值,而++a是先给a加值,再执行语句

a327190489 发表于 2020-11-19 18:17:38

第一个++a是先加值,a变为0,然后去判断,而在&&这个判断中,前面不符合的话,系统就不会去判断第二个了,所以b没有减值,按照b,a的输出顺序为1,0
第二个a++是先判断a此时还为-1,符合,然后a加值变为0,然后判断b--,b也是先判断,b此时还为1,不符合,然后b减值变为0,按照b,a的输出顺序为0,0
页: [1]
查看完整版本: 求助大佬