Префиксная инкрементная переменная при повторном использовании переменной в списке параметров

c++

86 просмотра

1 ответ

У меня сегодня особенный вопрос ..

Что происходит, когда я использую приращение префикса для переменной в списке параметров функции, но затем снова использую эту переменную в списке параметров? Произойдет ли приращение префикса до того, как переменная будет оценена как часть второго параметра?

(И я полагаю, что я мог бы также спросить, а что если вместо этого использовать постфиксный инкремент?)

Example(++marker1, marker2 - marker1);
Автор: jramm Источник Размещён: 12.11.2019 09:14

Ответы (1)


3 плюса

Решение

Оценка аргументов функции не является последовательной, поэтому изменение переменной в одном и использование ее значения в другом дает неопределенное поведение. Это тот случай, используете ли вы преинкремент или постинкремент.

В общем, избегайте изменения переменной как части сложного выражения; особенно если его значение используется в другом месте в выражении, поскольку оно имеет тенденцию давать неопределенное значение или (в некоторых случаях) неопределенное поведение.

Автор: Mike Seymour Размещён: 08.10.2014 02:37
Вопросы из категории :
32x32