上一次学习C++ 还是大一,现在都研二老狗了、、哎时光荏苒想当年好几本C++ 都被撕了用来垫饭了,可惜了。果然出来混都是要还的,废话不多说了。
当前常看到的三目运算符是这个样子的
c = a<b?a:b
这个运算符号的意思是对比a.b两值得大小,若a<b则 将a的值传输给c,否则将b的值传输给c
以下为例
#include <iostream>
using namespace std;
void test() {
int a = 10;
int b = 20;
int c = a < b ? a : b;
cout << c << endl;
}
int main() {
test();
}
输出结果:10
这时候考虑到c++的左值与右值概念,想看一下三目运算符是否可以当做左值进行运算,程序如下:
#include <iostream>
using namespace std;
void test3() {
int a = 10;
int b = 20;
(a < b ? a : b) = 100;
cout << "a" << a << endl;
cout << "b" << b << endl;
}
int main() {
test3();
}
输出结果 a:100 b:20
可知,实际上执行完三目运算后,其值经过内部比较,输出代表值已经为值较小的a