C++,这句话是什么意思

C++, What does this statement mean?

本文关键字:意思 是什么 这句话 C++      更新时间:2023-10-16

我看到了以下语句:(20, 30, 50)

当我cout << (20, 30, 50);时,它会打印50

当我重写它(a, b, c)-abc可以是char*int-它总是打印c。有人替我解释吗?请

臭名昭著的逗号运算符再次出现。逗号运算符计算参数,并在执行最后一个参数后返回值。

因此,在您的情况下,(20,30,50)被程序解释为一个正在调用的评估20的语句,然后是一个评估30的语句,最后是一个估计50的语句。但是,只看到最后一条语句的值,因此输出为50。

以下是与逗号运算符相关的关于堆栈溢出的更多问题,这将帮助您更好地理解其影响:

逗号运算符的作用是什么?

Comma操作员如何操作

C逗号运算符的使用

这是逗号运算符。默认情况下,它计算第一个参数并返回第二个参数。

在您的情况下,表达式(20, 30, 50)将计算2030,然后返回50

像大多数C++运算符一样,这可能是重载的,但您看到它的频率远低于其他运算符。

在此语句中

cout << (20, 30, 50); 

表达式(20, 30, 50)是带有逗号运算符的表达式。除最后一个操作数外的所有操作数都是丢弃的值表达式,即不使用它们的结果,并且表达式的值是最后一个运算数的值。对于这个表达式,它是50。

再举一个使用这个算子的例子,它会更清楚

int x = 10;
cout << ( ++x, ++x, ++x );

输出将为13。

int x = 10;
cout << ( x++, x++, x++ );

输出将为12。

如果要输出所有值,20、30、50,则可以使用初始值设定项列表。例如

for ( int x : { 20, 30, 50 } ) std::cout << x << std::endl; 

输出将是

20
30
50