Поясните код - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Прошу пояснить, видимо что то я не так понимаю.
i=-3;
    j=2;
    k=0;
    m = ++i ? j++ : ++k;
    printf("%d, %d, %d, %d\n", i , j, k, m);
Вывод: -2, 3, 0, 2. Не понимаю условия if. Почему m получает j , а не k. Разве это не тоже самое
if (++i)
m = j++;
else
m=++k;
Тоесть ++i равно -2 и это должно дать false т.к. true даёт результат от 1 до 255. Так почему же true???

Решение задачи: «Поясните код»

textual
Листинг программы
m = ++i ? j++ : ++k;

Объяснение кода листинга программы

В данном коде происходит следующая последовательность действий:

  1. Переменная i увеличивается на 1.
  2. Результат этого увеличения (теперь i равен 2) используется в условии выражения.
  3. Если условие выражения истинно (то есть j не равно 0), то выполняется следующее действие.
  4. Переменная j увеличивается на 1.
  5. Значение переменной k присваивается переменной m.
  6. Если условие выражения ложно (то есть j равно 0), то выполняется следующее действие.
  7. Переменная k увеличивается на 1.
  8. Значение переменной k присваивается переменной m. Таким образом, в результате выполнения данного кода, значение переменной m будет равно 2 или 3, в зависимости от того, равно ли значение переменной j нулю или нет.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5