在C语言中,条件运算符有如下形式
e = a>b?c:d;
执行该语句,当a>b成立时,将c赋值给e,当a>b不成立时,将d赋值给e。
所以c语言中条件运算符也叫三目云算法,将它作为一个整体,它只能是作为右值,赋值给其它变量的。
C++对其作了增强版。当条件运算符中?后面的两个条件都是左值时候,条件运算符可以作为左值,并且指向取值为真的那个变量所在的内存。
运行如下代码
#include<iostream>
using namespace std;
int main()
{
int a = 1;
int b = 0;
int c = 5;
int d = 4;
int e;
e = (a > b ? c : d);
(a >b ? a : b) = 3;
cout << e << endl;
cout <<a<<" "<< b << endl;
return 0;
}
结果如图所示