JuniorКодИногдаЕщё не отвечали
Что выведет i = i++ + ++i;?
Предскажите вывод этой программы — или объясните, почему это невозможно.
int i = 1;
i = i++ + ++i;
std::cout << i;
Определите вывод и объясните.
Неопределённое поведение: i изменяется дважды (i++ и ++i) и читается без точки следования между побочными эффектами, поэтому стандарт не задаёт результат — разные компиляторы печатают разное, а программа невалидна.
- ✗Вычисление одного «правильного» значения, как будто операции упорядочены слева направо
- ✗Называть это неуточнённым (один из допустимых выводов), а не неопределённым (невалидная программа)
- ✗Предполагать, что новый стандарт задаёт результат
- →В чём разница между неуточнённым и неопределённым поведением?
- →Какие выражения в C++17 получили гарантированный порядок вычисления?