Venkatesh Pyla Ответов: 2

Почему инкремент не может быть работой в логике?


почему переменная k не может быть увеличена в данной программе?

Что я уже пробовал:

#включить <stdio.h>
пустота главная()
{
int k = 8;
int x = 0 == 1 && k++;
printf("%d %d\n", x, k);
}
Выход:0 8

2 Ответов

Рейтинг:
2
Рейтинг:
16

Thomas Daniels

Это происходит из-за явления, называемого короткое замыкание Это означает, что правая рука && оператор не будет оцениваться, если результат уже определен с левой стороны. 0 == 1 является 0/false Итак, не имеет значения, что правая рука (k++) возвращает окончательный результат всегда 0 или false (ложь &&усилителя; правда-ложь, как ложь и усилитель; & ложь). Это означает, что правая рука k++ никогда не получает оценки, так что k не увеличивается в размерах.