Ошибки с использованием троичного оператора в c
У меня есть кусок кода на C, указанный ниже:
main()
{
int a=10, b;
a>=5 ? b=100 : b=200 ;
printf("%d" , b);
}
выполнение кода на компиляторе gcc в unix генерирует ошибку времени компиляции как «lvalue, требуемая как левый операнд присваивания», и указывает ошибку на b = 200, тогда как в окнах, компилирующих с использованием Turbo C, выдается 200 в качестве вывода.
Кто-нибудь может объяснить, что именно происходит в этом случае?