-2

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

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 不会。奇怪的是,代码分析和 Clang Power Tools 都没有显示此警告。

谢谢。

4

1 回答 1

7

为什么这行代码会编译?

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

不发出警告,这行编码在做什么?

这取决于您设置的编译器和警告级别。如果表达式没有做任何事情,一些编译器会警告你。例如带有 -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?
于 2018-08-03T17:03:25.747 回答