为什么缺少名称的函数调用仍然可以编译?

Why does a function call missing its name still compile?

一位开发人员在复制和粘贴类似类型的代码时犯了一个错误,而不是

int x = 100;
int y = 100;
int z = 100;
aFunction(x, y, z);

他们不小心输入了

int x = 100;
int y = 100;
int z = 100;     
(x, y, z);  //What does this Line of Code do?

这段代码编译成功,没有给出任何警告。当尝试在 VS 2015 中调试这段代码时,调试器将跳过这行代码。

为什么这行代码可以编译并且没有给出警告,这行代码在做什么?

更新: 包含所有警告的 Visual Studio 2015 年构建会显示此警告,但级别 4 不会。奇怪的是,Code Analysis 和 Clang Power Tools 都没有显示这个警告。

谢谢。

Why does this line of code compile?

因为该表达式在语法上是正确的

give no warning and what is this line of coding doing?

这取决于您为其设置的编译器和警告级别。如果表达式不执行任何操作,一些编译器会警告您。例如带有 -Wall 标志的 g++ 给出以下内容:

 t.cpp:4:5: warning: left operand of comma operator has no effect [-Wunused-value]
     (x, y, z);  //What does this Line of Code do?

 t.cpp:4:8: warning: right operand of comma operator has no effect [-Wunused-value]
     (x, y, z);  //What does this Line of Code do?