Страницы

Поиск по вопросам

четверг, 28 ноября 2019 г.

Почему g++ и msvc по-разному интерпретируют код?

#c++ #visual_c++ #g++


Дан код:

int main() {
    int a = 8;
    int b = 100;
    float d;
    int c = ++a * a++;
    d = b / (--a);
    return 0;
}


но почему-то в g++ переменная с равна 90, а в msvc она равна 81.
    


Ответы

Ответ 1



Неопределенное поведение классическое: int c = ++a * a++; Для C++98: Двухкратная запись в переменную a в пределах одной точки следования. Для C++11: Нарушение правил порядка вычисления. Программа ошибочна. Компилятор может реагировать случайным образом.

Комментариев нет:

Отправить комментарий