Объясните почему так происходит - C (СИ)
Формулировка задачи:
Ответом к этому коду:
является:
т.е: а<b ? нет, значит , ((1 вопрос) почему выполняется второе действие?), ((2 вопрос) почему выполняется если уже выполнилось "True"), ну почему цифра 7 в конце это понятно.
int a, b, k; a = 10; b = 3; k = a < b ? 1 : 2 ? 10, printf("xxxxxxx") : 20, printf("vvvvvv"); printf("%d", k);
xxxxxxx vvvvvv7
10, printf("xxxxxxx")
printf("vvvvvv")
Решение задачи: «Объясните почему так происходит»
textual
Листинг программы
k = a < b ? 1 : ((2 ? 10, printf("xxxxxxx") : 20), printf("vvvvvv"));
Объяснение кода листинга программы
В представленном коде используется оператор тернарного условия (условного оператора) и оператор присваивания. Ваш вопрос заключается в том, что происходит в этом коде. Вот объяснение каждого шага:
k = a < b ? 1 : ((2 ? 10, printf(
xxxxxxx) : 20), printf(
vvvvvv));
- Сначала выполняется операция сравнения
a < b
. Если она возвращаетtrue
(то есть еслиa
меньшеb
), то следующая часть условного выражения (после?
) будет выполнена. В противном случае, еслиa
больше или равноb
, будет выполнена другая часть условного выражения. - Если
a < b
возвращаетtrue
, то следующая часть условного выражения -((2 ? 10, printf(
xxxxxxx) : 20), printf(
vvvvvv))
- будет выполнена. - Внутри этой части сначала выполняется операция сравнения
2 ? 10
. Поскольку2
не равно0
, то следующая часть (после:
) будет выполнена. Таким образом, значение10
присваивается переменнойprintf(
xxxxxxx)
. - Затем вызывается функция
printf
с аргументомxxxxxxx
. Поскольку мы не видим вывода, предположим, что это просто некоторая проверка или действие, выполняемое в этом коде. - После этого выполняется операция сравнения
20 ? 20 : 20
. Поскольку20
не равно0
, то следующая часть (после:
) будет выполнена. Таким образом, значение20
присваивается переменнойprintf(
vvvvvv)
. - Наконец, вызывается функция
printf
с аргументомvvvvvv
. Поскольку мы не видим вывода, предположим, что это также проверка или действие, выполняемое в этом коде. - Если
a < b
возвращаетfalse
, то вместо всего этого будет выполнена другая часть условного выражения, которая не была представлена в вашем вопросе.
- Сначала выполняется операция сравнения
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д