今天我发现以下代码用gcc编译:
#include <iostream>
int main()
{
int x = (23,34);
std::cout << x << std::endl; // prints 34
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么编译?的意义是什么 (..., ...)?
在C++中,,是一个运算符,因此(23,34)就像(23+34)表达式一样.在前者中,,是运营商,而在后者中,+是运营商.
因此表达式(23,34)求值到最右边的操作数,34这就是代码输出的原因34.
我还想提一下,,它不是函数调用中的运算符:
int m = max(a,b);
Run Code Online (Sandbox Code Playgroud)
这里,作为参数的分隔符.它不作为运营商.所以你将两个参数传递给函数.
然而,
int m = max((a,b), c);
Run Code Online (Sandbox Code Playgroud)
这里首先,是操作符,第二个,是分隔符.所以你仍然向函数传递两个参数,而不是三个,它等同于:
int m = max(b, c); //as (a,b) evaluates to b
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.:-)
| 归档时间: |
|
| 查看次数: |
1661 次 |
| 最近记录: |