#include <stdio.h>
int main()
{
int i = 0,a=0,b=2,c =3,d=4;
i = a++ && ++b && d++;
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
有逻辑操作符具有的短路性就会导致,
i 中的 a++ 他是后置++,所以他是0为假&&操作符就不会再往后看所以a会被后置++成1,而b d并未改变,最终就会打印出1 2 3 4
#include <stdio.h>
int main()
{
int i = 0,a=0,b=2,c =3,d=4;
i = a++||++b||d++;
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
}
同理因为有短路
首先a为0但是因为是 || 所以还会进行往后看 b b为非0所以左边这个 || 为真再看右边这个 ||因为左边已经有真所以不会再看最右边的d,最终a == 1 b == 3 会打印出1 3 3 4