При компиляции на Windows компилятор выдает следующее предупреждение:
заставляет значение bool 'true' или 'false' (предупреждение о производительности)
It возникает, когда я делаю что-то вроде:
int a = ...
bool b = (a & (1 << 3);
Решение состоит в том, чтобы сделать:
bool b = (a & (1 << 3)) != 0;
или использовать int вместо bool.
Вопрос : почему в первом случае возникает проблема с производительностью, а не во втором? Кроме того, почему я не получаю предупреждение:
if (a & (1 << 3)) {
...
}
Потому что в этом случае значение преобразуется в bool, не так ли?