Тернарный оператор - пояснить код - C (СИ)
Формулировка задачи:
Вводим числа
1234 = 1+2+3+4 -> 10
Почему при вводе 1236 выдает Истину? 12 не делится на 9.
#include <stdio.h>
int main()
{
int x1,x2,x3,x4,x5,x6;
char c;
scanf("%d",&x1);
x2=x1%10;
x3=x1%100/10;
x4=x1%1000/100;
x5=x1/1000;
//printf("%d\n",x2+x3+x4+x5);
x6=x5+x4+x3+x2;
c = (x6 % 3 && x6 % 9) == 0
? 'y'
: 'n';
printf("%d %c\n",x6,c);
}Решение задачи: «Тернарный оператор - пояснить код»
textual
Листинг программы
(12 % 3 && 12 % 9)
Объяснение кода листинга программы
В данном коде используется тернарный оператор. Он работает следующим образом:
12 % 3- это операция взятия остатка от деления числа 12 на 3. Результат этой операции равен 0, так как 12 делится на 3 без остатка.12 % 9- это операция взятия остатка от деления числа 12 на 9. Результат этой операции также равен 0, так как 12 делится на 9 без остатка.12 % 3 && 12 % 9- это выражение, в котором сначала выполняется операция взятия остатка от деления числа 12 на 3, а затем результат этой операции сравнивается с результатом операции взятия остатка от деления числа 12 на 9.- Результатом всего выражения будет 0, так как оба выражения
12 % 3и12 % 9равны 0, и при сравнении двух нулей, результат также будет 0. Таким образом, код выполняет проверку, являются ли числа 12 и 9 кратными друг другу. В данном случае, они являются кратными, так как результат выражения равен 0.