Поясните код - C (СИ)
Формулировка задачи:
Прошу пояснить, видимо что то я не так понимаю.
Вывод: -2, 3, 0, 2.
Не понимаю условия if. Почему m получает j , а не k.
Разве это не тоже самое
Тоесть ++i равно -2 и это должно дать false т.к. true даёт результат от 1 до 255.
Так почему же true???
i=-3;
j=2;
k=0;
m = ++i ? j++ : ++k;
printf("%d, %d, %d, %d\n", i , j, k, m);if (++i) m = j++; else m=++k;
Решение задачи: «Поясните код»
textual
Листинг программы
m = ++i ? j++ : ++k;
Объяснение кода листинга программы
В данном коде происходит следующая последовательность действий:
- Переменная
iувеличивается на 1. - Результат этого увеличения (теперь
iравен 2) используется в условии выражения. - Если условие выражения истинно (то есть
jне равно 0), то выполняется следующее действие. - Переменная
jувеличивается на 1. - Значение переменной
kприсваивается переменнойm. - Если условие выражения ложно (то есть
jравно 0), то выполняется следующее действие. - Переменная
kувеличивается на 1. - Значение переменной
kприсваивается переменнойm. Таким образом, в результате выполнения данного кода, значение переменнойmбудет равно 2 или 3, в зависимости от того, равно ли значение переменнойjнулю или нет.