我有 :
#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/