int main()
{
int a =1;
int b = 2;
(a < b? a:b) = 3;
printf("a = %d, b = %d\n", a,b);
return 0;
}
上面这段代码在C语言编译器中无法通过,在C++编译中可以通过
C语言中的三目运算符返回的是变量值,不能作为左值使用
C++中的三目运算符返回的就是变量本身,因此可以出现在任何地方
注意:
三目运算符可能返回的值中如果有一个常量,则不能作为左值使用。
int q = 1;
int p = 2;
(q<p? q:p)=3;// 编译通过,在C++中三目运算符返回的是变量,在C语言中返回的是值,所以在C++中可以作为左值,在C语言中不可以
//(q<p? 1:p)=3 ;//编译不通过,三目运算符可能的返回值中如果有一个常量,则不能作为左值使用
printf("q = %d,p=%d\n",q,p);