У меня путаница при использовании AND и OR, хотя это основной вопрос, у меня много путаницы.Я понимаю, что существует методология короткого замыкания, когда используются логические операторы AND и OR.
Assume int a,x=0,y=0;
a). a= 10 && ++x && y++
Values a=0,x =1,y=1 [expected ]
b). a= 10 && ++x || y++
Values a=1 ,x=1,y=0 [short circuit
,expected ]
c). a= 10 || ++x || y++
Values a=1 , x=0, y=0 [short
circuit ]
Мои вопросы:
a = 10 && y ++
Values a =0, x=0(default didn't
change ), y=1 [ expected no short
circuit y is incremented later and
hence a =0 ]
Со ссылкой на вопрос 1.
a = 10 || ++x && y++
Фактические значения:
a=1, x=0,y=0
Что я ожидал:
a = 0, x=0, y=1
Объяснение: 10 ||++ x (короткое замыкание)
Так что я остаюсь с a = (1 && y ++) => a = 0 (нет короткого замыкания, а y имеет пост-инкремент), следовательно, a = 0, y = 1.
Как я могу понять мой вопрос 2;Мне кажется, я что-то пропустил.