📜  在C和C++中逗号运算符的结果为l值(1)

📅  最后修改于: 2023-12-03 14:51:15.609000             🧑  作者: Mango

在C和C++中逗号运算符的结果为l值

在C和C++中,逗号运算符(,)是二元运算符,它将两个表达式连接在一起,并返回它们中的最后一个表达式的值。但是,逗号运算符还具有一个有趣的行为,即它的结果可以作为左值。

什么是l值?

在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值。