开发人员正在复制和粘贴类似类型的代码,并在
处犯了一个错误。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均未显示此警告。
谢谢。
答案 0 :(得分: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?