c++拾遗-c++对表达式的增强

先看以下代码在C中的效果

1
2
3
4
5
6
7
8
9
10
11
12
int main(int argc, const char * argv[]) {
int a = 10;
int b = 20;
//返回一个最小数 并且给最小数赋值成30
//该行报错 ,原因是C语言中表达式不可能做左值
(a < b ? a : b ) = 30;
printf("a = %d, b = %dn", a, b);
return 0;
}

而在C++中者编译通过,打印出结果

1
2
a = 30, b = 20
Program ended with exit code: 0

总结
C语言返回的是变量的值,不能作为左值使用
C++返回的是变量本身,可以出现在任何地方