考虑:
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;
答案 0 :(得分:29)
程序员使用comma operator在单个语句中提供了两个不相关的表达式。因为这是一条语句,所以两个表达式都位于if
条件的内部。
这是一个很糟糕的技巧,最好使用围绕两个语句的实际{}
大括号来完成。
您的示例并不等效;应该是:
if (g[i][j] == 0)
{
dfs(g, i, j);
++regions;
}