我有 :

#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有何不同,但是extra parenthesis为什么会有所作为。

最佳答案

赋值的优先级低于三元运算符,因此该行的计算结果如下:

((a>b)?b=a:b)=b;

用:
b=(a>b)?a:b;

关于c - 错误: lvalue required in this simple C code?(三元分配?),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6966299/

10-11 23:05