众所周知
在c语言中,三目运算符的结果返回的是一个具体的数值,是一个常量;
而C++中,三目运算符返回的是一个变量,可以作为左值使用;
那么C++中这个三目运算符是如何做到返回一个变量的呢?
让表达式返回一个内存空间的首地址吗?
这个是编译器的编译方式的不同,c 返回的是值 ,c++ 返回的是变量。
比如printf("%d",a=3+2);
在 C 里面等同于
a = 3 + 2;
pritf("%d",5);
在C ++ 里面等同于
a = 3 + 2;
pritf("%d",a);
三木运算符也是一样的,他是需要把复杂的语句拆解开来,变成简单的语句,最后变成机器码的。
( a == 1 ? b = 4 : c = 5 ) = 6;
// c
( 1 == 1 ? b = 4 : c = 5 ) = 6;
(c=5)=6;
c = 6;
// c ++
( 1 == 1 ? b = 4 : c = 5 ) = 6;
(c=5)=6;
5 = 6;
所以c会报错,c++ 不会