int main() { int a = 10; int b = 20; //返回一个最小数 并且给最小数赋值成3 //三目运算符是一个表达式 ,表达式不可能做左值 //(a < b ? a : b )是一个表达式,表达式的结果放在寄存器中 (a < b ? a : b )= 30; printf("a = %d, b = %d\n", a, b); system("pause"); return 0; }
在C++中
int a = 10;
int b = 20;
(a < b ? a : b )= 30; //这种写法是对的,(a < b ? a : b )返回的是a变量本身
C语言中
(a < b ? a : b )= 30; //这种写法是不对的,(a < b ? a : b )返回的是变量值
总结;
1)C语言返回变量的值 C++语言是返回变量本身
2)
C语言中的三目运算符返回的是变量值,不能作为左值使用
C++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地方
3)
三目运算符可能返回的值中如果有一个是常量值,则不能作为左值使用
(a < b ? 1 : b )= 30;
4)C语言如何支持类似C++的特性那?
变量的本质是内存空间的别名,是一个标号。