#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