#include <iostream>
using namespace std;
int main()
{
for ( int k = -4; k < -1; k++ ) {
unsigned long kkk = (k+4)*8+1;
bool jjj = kkk < 256;
if ( jjj == false ) cout << "Impossible!!!" << endl;
}
}
Если скомпилировать такой код с ключом /O2(cl /EHsc /O2 main.cpp), то будет выведен текст, который не должен быть выведен. Если без ключа оптимизации(cl /EHsc main.cpp), то текст не будет выведен.Проблема тут в том, что компилятор оптимизурет выражение (k+4)*8+1 < 256 до k < 28, забывая что k может принимать отрицательные значения и результат сравнения проверяет командой, которая знак не учитывает.
Нечасто приходится сталкиваться с такими ошибками и страшно подумать, где в коде это может проявится. Последить за судьбой этого бага в багтрекере Майкрософт можно тут.