#include <stdio.h>
int main() {
int a = 1;
int b = 2;
(a < b ? a : b) = 3;
printf("a=%d, b = %d\n", a, b);
}
t4-1.c: In function ‘main’:
t4-1.c:6:21: error: lvalue required as left operand of assignment
(a < b ? a : b) = 3;
正常运行: a=3, b = 2
注意: 三目运算符可能返回的值如果有一个是常量值,则不能作为左值使用.
int a = 4;
int& b = a; //b为a的别名
b = 5; //操作b就是操作a
注意:普通引用在定义时必须用同类型的变量进行初始化
int a = 1;
int b = 2;
(a < b ? a : b ) = 3 ; // 正确, 返回a或b的引用,可作为左值
(a < b ? 1 : b ) = 4; // 错误,返回1或b的值,不能作为左值