мой код:
#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 ++.
Идиоматический способ написать это назначение:
b = (a >= 5) ? 100 : 200;
Если вы настаиваете на том, чтобы придерживаться этого, добавьте скобки:
(a >= 5) ? (b=100) : (b=200);
Подробнее о том, почему это работает в C ++, но не в C, смотрите Условные операторные различия между C и C ++ (спасибо @Grijesh Chauhan!)
скобки имеют более высокий приоритет в C .. U получить предупреждение из-за проблемы приоритета ..
Попробуй это..
(a >= 5) ? (b = 100) : (b = 200);