#cpp #c #неопределенное_поведение
Является ли такой способ обмена значений переменных неопределённым поведением? http://codepad.org/3IFTpgwR #includeint main(void) { int x = 10, y = 20; x ^= y ^= x ^= y; printf("%d %d", x, y); return 0; } Здесь есть двукратное присваивание переменной x - является ли оно некорректным? PS: Вопрос возник из-за того, что другие языки иначе вычисляют эту конструкцию.
Ответы
Ответ 1
Да, является. Операция xor-c-присваиванием (^=) не является точкой следования. Многократное присваивание в рамках одной точки следования - UB. Для обмена переменных в c++ есть std::swap()
Комментариев нет:
Отправить комментарий