Присвоить массиву символов строку в тернарном операторе
Только начал учить С. Мне нужно проверить условие и записать в память строку "YES" либо "NO" в зависимости от истинности условия. Так же мне нельзя использовать условные конструкции. Пытаюсь вот так:
char s[4];
s = (a + b + c == d + e + f) ? "YES" : "NO";
Но выдает ошибку к этой строке: "Ошибка (активно) E0137 выражение должно быть допустимым для изменения левосторонним значением".
Ответы (1 шт):
Автор решения: Антон
→ Ссылка
Приведу свои пять копеек, а именно "составные литералы" появившиеся в С99
#include <stdio.h>
#include <string.h>
int main(void) {
const char *s;
int a = 1, b = 1, c = 1;
int d = 3, e = 0, f = 0;
s = (const char *[]){"NO", "YES"}[a+b+c == d+e+f];
printf("%s\n", s);
char s1[4];
e = 1;
strcpy(s1, (const char *[]){"No", "Yes"}[a+b+c == d+e+f]);
printf("%s\n", s1);
printf("%s\n", (const char *[]){"Nooo", "Yeeah"}[a+b+c == d+e+f]);
return 0;
}