Lvalue требуется ошибка в C

мой код:

#include<stdio.h>
int main() {
int a=10, b;
a >= 5 ? b=100 : b=200;
printf("%d %d", a, b);
return 0;
}

Здесь появляется «Lvalue Required» в строке условного оператора.

Можете ли вы объяснить мне, почему?

Кстати, эта же программа отлично работает на C ++.

2

Решение

Идиоматический способ написать это назначение:

b = (a >= 5) ? 100 : 200;

Если вы настаиваете на том, чтобы придерживаться этого, добавьте скобки:

(a >= 5) ? (b=100) : (b=200);

Подробнее о том, почему это работает в C ++, но не в C, смотрите Условные операторные различия между C и C ++ (спасибо @Grijesh Chauhan!)

7

Другие решения

скобки имеют более высокий приоритет в C .. U получить предупреждение из-за проблемы приоритета ..
Попробуй это..

(a >= 5) ? (b = 100) : (b = 200);
1

По вопросам рекламы [email protected]