我对以下代码有一些问题:
#include<stdio.h>
void main()
{ int a=6,b=2,g;
a>b?g=a:g=b;
}
这是正确执行而没有任何错误。但是,如果正确查看,这应该会给出Lvalue Required错误。(a>b?g=a:g)是实际表达式,因为没有括号用作a>b?g=a:(g=b); 并且将值b 分配给求解第二个赋值(=)运算符左侧的表达式后获得的常量值,这肯定是错误的。请就这个话题提供帮助。
条件运算符的结果在 C 中永远不是左值。
如果您没有得到带有条件表达式的语句的诊断,则它不是 C。检查您使用的是 C 编译器(而不是 C++ 编译器 - C++ 中条件运算符的规则不同)并且 ISO模式已启用。
三元运算符本身就是一个右值。它并不完全是控制流,更多的是在给定条件下给出一个值。
要修复,请尝试g = a > b ? a : b
.
不要那样做:
a>b?g=a:g=b;
尝试这个:
g = (a>b)?a:b;
将g=
零件移到开头:
g=a>b?a:b;
这会做你想要的......