下面这行代码在一个 for 循环中。如果该方法失败,则需要中断。 CATEGORY_1 是一个枚举。我将此枚举作为新参数添加到具有默认值的 AddToList 方法。如果你仔细看下面,我实际上犯了一个错误,把逗号和枚举放在函数的参数列表之外。这与 VS2010 完美编译。所以我很难发现为该参数而不是 CATEGORY_1 传递了默认值。 有谁知道为什么会成功?
if (! AddToList(obj1, (unsigned int) Val), CATEGORY_1)
{
break;
}
最佳答案
在 C++ 中,逗号不仅仅是分隔符;它也可以是一个运算符(operator)。那个逗号是一个运算符。逗号运算符计算第一个表达式,丢弃结果,然后计算第二个表达式并产生其结果。
!AddToList(obj1, (unsigned int) Val) , CATEGORY_1
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
First expression Second expression
[当然,与大多数其他运算符一样,逗号运算符可以被重载,如果在这里使用重载,语义可能会有所不同。这是内置逗号运算符的行为。]
关于c++ - 为什么这段代码在 VS 中编译? ("extra"逗号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5629482/