Почему этот код ведет себя по -разному, если используется оптимизация (-O2, -O3)?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему этот код ведет себя по -разному, если используется оптимизация (-O2, -O3)?

Сообщение Anonymous »

Мне пришлось кодировать некоторые процедуры проверки, и они, по -видимому, ведут себя по -разному, если использует -O0, -O1, -O2 или -O3. < /p>
ниже я создал минимальный пример, который работает Хорошо для -O0 и -O1. Но используя -O2 или -O3, поведение изменилось. В случае -O0 и -O1, для петли увеличивает целое число, и в первый раз, когда он достигает максимума, происходит переполнение, и процедура проверки. В другом случае для петли никогда не ломается, хотя целое число становится отрицательным. < /P>
code < /h1>
#include

inline bool check(const int i) {
if (i < 0)
return false;
else
return true;
}

int main() {
for (int i = 0;; i += 50000000) {
std::cout

Подробнее здесь: https://stackoverflow.com/questions/207 ... o3-is-used
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»