이 연산에 대해서 궁금합니다

ch0nn0m의 이미지

변수에 논리연산자가 들어가게 되면 어떻게 연산을 하는지...??
그리고 z값이 2가 아닌 1이 나오는 이유도...??

int x = -1, y = -1, z = 1, k;
 
 k = ++x || ++y && ++z;
 printf("%d %d %d %d", k, x, y, z);
semmal의 이미지

x || y
x가 참이면 y 계산 안합니다.

x && y
x가 거짓이면 y 계산 안합니다.

++x || ++y
x = 0
y = 0
고로 거짓(0)
k는 거짓(0)

k=0
x=0
y=0
z=1

ok?
------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?