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