#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: Нарушение правил порядка вычисления. Программа ошибочна. Компилятор может реагировать случайным образом.
Комментариев нет:
Отправить комментарий