三目运算符:
三目运算符即可作为**右值使用,又可作为左值**使用。
#include<iostream>
using namespace std;
int main()
{
int a=100;
int b=200;
(a<b?a:b)=666;
cout<<"a的值为:"<<a<<endl; //a=666
cout<<"b的值为:"<<b<<endl; //b=200;
return 0;
}
运行结果:
a的值为:666
b的值为:200
#include<iostream>
using namespace std;
int main()
{
int a=100;
int b=200;
(a<b?3:b)=777; //error: lvalue required as left operand of assignment
cout<<"a的值为:"<<a<<endl;
cout<<"b的值为:"<<b<<endl;
return 0;
}
运行结果:
error: lvalue required as left operand of assignment
结论1:
三目运算符可能返回的值中如果有一个是常量值,则不能作为左值使用。
意义:如果三目运算符的返回都是变量的时候,返回的是变量的本身。
引用:
变量名的本质是存储空间的别名;
引用:已经定义了的变量的别名。
引用的语法:Type& name = var;
引用在定义时,必须初始化,且类型必须一致,初始化的值必须是变量,而非常量。
int a=100;
int& b=a;
b=666;
注意:普通引用在定义时必须用相同类型的变量进行初始化。
#include<iostream>
using namespace std;
int main()
{
int a=100;
int& b=a;
b=666;
cout<<"a的值为:"<<a<<endl;
cout<<"b的值为:"<<b<<endl;
return 0;
}
运行结果:
a的值为:666
b的值为:666
三目运算符的可能返回都是变量时,返回的是引用