Я хочу знать, почему значение k в приведенном ниже коде равно 1.
Я думаю ++i || ++j && ++k
выполняется по порядку:
((++i || ++j) && ++k)
Итак, в первом фрагменте (++i || ++j)
, ++i
имеет значение true, поэтому ++j
не оценивается, поэтому i=2
, j=1
.
Затем во втором фрагменте (true && ++k)
, то есть ++k
, и затем k=2
.
#include <stdio.h>
int main(void)
{
int i, j, k;
i = 1; j = 1; k = 1;
printf("%d ", ++i || ++j && ++k);
printf("%d %d %d\n", i, j, k);
return 0;
}
Но
printf("%d %d %d\n", i, j, k);
показывает
2 1 1
Я не знаю, что ошибалось или что я неправильно понял.