📅  最后修改于: 2023-12-03 14:51:15.609000             🧑  作者: Mango
在C和C++中,逗号运算符(,
)是二元运算符,它将两个表达式连接在一起,并返回它们中的最后一个表达式的值。但是,逗号运算符还具有一个有趣的行为,即它的结果可以作为左值。
在C和C++中,表达式要么是r值
,要么是l值
。r值表示右值,它是一个临时的、不可修改的值。l值表示左值,它是一个可修改的、有地址的对象。
最简单的逗号运算符的使用方式是将两个表达式连接在一起,例如:
int x = 1, y = 2, z = 3;
int result = (x++, y++, z++);
在这个例子中,逗号运算符将三个表达式连接在一起,并返回最后一个表达式的值,即z++
的值,在这里是3。注意,逗号运算符返回的结果是一个r值。
然而,在某些情况下,逗号运算符的结果可以是一个l值。这意味着它可以作为赋值语句的左值,例如:
int x = 1, y = 2, z = 3;
(++x, ++y, ++z) = 10;
在这个例子中,逗号运算符将三个表达式连接在一起,但是它的结果是最后一个表达式的地址,即&z
。因此,赋值语句将10赋值给了z
。
逗号运算符通常被用于紧凑代码,但是要注意它的结果是什么。当逗号运算符的结果用作赋值语句的左值时,它的结果为l值。否则,它的结果为r值。