Ошибка: требуется lvalue в этом простом коде C? (Тернар с присваиванием?)

У меня есть:

#include<stdio.h>

int main()
{
 int a=5,b=6;
 (a>b)?b=a:b=b;    // Here is the error
 return 0;
}

Но если я заменю:

(a>b)?b=a:b=b;       // Error
with   
(a>b)?(b=a):(b=b);   // No-Error

, я понимаю, что lvalue равно значение, которому что-то может быть присвоено, и чем оно отличается от rvalue , но почему дополнительная скобка имеет значение.

11
задан Yugal Jindle 11 December 2011 в 10:45
поделиться