“ if”语句中的逗号是什么意思?

时间:2019-05-11 20:44:41

标签: c++

考虑:

for (auto i = 0; i < g.size(); ++i)
    for (auto j = 0; j < g.size(); ++j) if (g[i][j] == 0) dfs(g, i, j), ++regions;
return regions;

我不喜欢一个行代码。该代码在if()中执行什么?

我对“,”符号感到困惑。

通常我将其写为:

  for (auto i = 0; i < g.size(); ++i)
  {
      for (auto j = 0; j < g.size(); ++j)
      {
          if (g[i][j] == 0)
          {
             dfs(g, i, j)
          }
          ,++regions; // I am not sure what to do here. Inside the "if" scope??
      }
} 
  return regions;

1 个答案:

答案 0 :(得分:29)

程序员使用comma operator在单个语句中提供了两个不相关的表达式。因为这是一条语句,所以两个表达式都位于if条件的内部。

这是一个很糟糕的技巧,最好使用围绕两个语句的实际{}大括号来完成。

您的示例并不等效;应该是:

if (g[i][j] == 0) 
{
   dfs(g, i, j);
   ++regions;
}