今天我发现下面的代码用 gcc 编译:
#include <iostream>
int main()
{
int x = (23,34);
std::cout << x << std::endl; // prints 34
return 0;
}
为什么会这样编译?是什么意思 (..., ...)?
今天我发现下面的代码用 gcc 编译:
#include <iostream>
int main()
{
int x = (23,34);
std::cout << x << std::endl; // prints 34
return 0;
}
为什么会这样编译?是什么意思 (..., ...)?
在表达式中,逗号运算符将计算其所有操作数并返回最后一个。这就是为什么在您的示例中,x
等于 34。
在 C++ 中,,
is 是一个运算符,因此(23,34)
是一个表达式,就像(23+34)
是一个表达式一样。前者,
是算子,后者+
是算子。
因此,表达式(23,34)
计算为最右边的操作数,34
这就是您的代码输出的原因34
。
我还想提一下,,
它不是函数调用中的运算符:
int m = max(a,b);
这里,
充当参数的分隔符。它不充当操作员。因此,您将两个参数传递给函数。
然而,
int m = max((a,b), c);
这里第一个,
是运算符,第二个,
是分隔符。所以你仍然向函数传递两个参数,而不是三个,它等价于:
int m = max(b, c); //as (a,b) evaluates to b
希望有帮助。:-)