我对以下代码有一些问题:
#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&gt; b?g = a:(g = b); 并且值 b被分配给求解第二个赋值(=)运算符左侧表达式后得到的常量值,这肯定是一个错误。请帮助解决这个问题。
答案 0 :(得分:2)
条件运算符的结果绝不是C中的左值。
如果没有使用条件表达式的语句进行诊断,则不是C.检查您使用的是C编译器(而不是C ++编译器 - 条件运算符的规则在C ++中是不同的)和ISO模式已启用。
答案 1 :(得分:1)
三元运算符本身就是一个Rvalue。它没有完全控制流程,在给定条件的情况下更多地给出了值。
要修复,请尝试g = a > b ? a : b
。
答案 2 :(得分:0)
不要这样做:
a>b?g=a:g=b;
试试这个:
g = (a>b)?a:b;
答案 3 :(得分:0)
将g=
部分移至开头:
g=a>b?a:b;
那会做你想要的......