#include <stdio.h>
int main()
{
int a = 0;
printf("%d\n", !a && ++a );
printf("%d\n", !a);
return 0;
}
这一串代码定义了a =0 ,!a 是真值,++a也是真值,第一个printf打印的是1没问题。
因为++a,a 就变成了 1,第二个printf 打印的是0,没问题。
那么看第二段代码
#include <stdio.h>
int main()
{
int a = 0;
printf("%d\n", !a || ++a );
printf("%d\n", !a);
return 0;
}
这里第二个printf为什么打印的会是1呢?