c与c++中的三目运算符

c与c++中的三目运算符

c中的三目运算符

C语言三目运算表达式返回值为数据值,为右值,不能赋值。
int a = 10;
int b = 20;
printf("ret:%d\n", a > b ? a : b);

输出为:20

C++语言中三目运算表达式返回值为变量本身(引用),为左值,可以赋值。
int a = 10;
int b = 20;
cout << "ret = " << (a < b ? a : b) << endl;
(a < b ? a : b) = 100; //b = 100 C++中返回的是变量
cout << "a = " << a << endl;
cout << "b = " << b << endl;

输出为:ret = 10
       a = 100
	   b = 20

**

[左值和右值概念]

在c++中可以放在赋值操作符左边的是左值,可以放到赋值操作符右面的是右值。
有些变量即可以当左值,也可以当右值。

左值为Lvalue,L代表Location,表示内存可以寻址,可以赋值。
右值为Rvalue,R代表Read,就是可以知道它的值。

比如:int temp = 10; temp在内存中有地址,10没有,但是可以Read到它的值。

你可能感兴趣的:(c++学习,c++)