Member 13010616 Ответов: 2

Может ли кто-нибудь сказать мне, как работает это утверждение if?


если (ФОК.mCells [я] [Дж]) mCells [я] [Дж] = ФОК.mCells [я] [Дж] -&ГТ;клон();
еще mCells [я] [Дж].сбросить();

Что я уже пробовал:

если (ФОК.mCells [я] [Дж]) mCells [я] [Дж] = ФОК.mCells [я] [Дж] -&ГТ;клон();
еще mCells [я] [Дж].сбросить();

2 Ответов

Рейтинг:
0

OriginalGriff

C (на котором основан C++) не имел понятия булевых значений: вместо этого любое ненулевое значение считается "истинным", и только нулевые значения считаются "ложными".

Так что ваш if это всего лишь короткая форма

if (src.mCells [i] [j] != 0) ...


Рейтинг:
0

KarstenK

это хороший пример для плохого кода. ;-)

Я бы написал его (без комментариев)

if(src.mCells[i][j] != 0)//sanity check
{
  mCells[i][j] = src.mCells[i][j]->clone(); //make copy
}
else 
{
  mCells[i][j].reset();//defaulting
}
Лучше всего использовать фигурные скобки в коде if/else для удобства чтения и обслуживания.