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