Что означает запятая в выражении "если"?
Рассматривать:
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
Программист использовал оператор запятой для предоставления двух несвязанных выражений в одном выражении. Поскольку это одно утверждение, оба выражения находятся "внутри" условия if
.
Это плохой хак, который лучше сделать с помощью фактических {}
скобок, окружающих два утверждения.
Ваш пример не эквивалентен; так должно быть:
if (g[i][j] == 0)
{
dfs(g, i, j);
++regions;
}