Вопрос Порядок передачи параметров операторам и функциям в C++?

Регистрация
27 Ноя 2013
Сообщения
68
Репутация
0
Спасибо
0
Монет
0
Декларирует ли стандарт C++ порядок передачи параметров операторам и функциям с двумя или более параметрами?

Например:
int f(int x, int y){return x + y;}

int main()
{
int x = 2;
int z = f(x += x, x *= x);

// что в z? 20 или 12? или зависит от реализации компилятора и как звёзды станут? *-)

return 0;
}
 
Да, передача параметров регламентируется стандартом С - __cdecl Это слева на право. А вот за такой код int z = f(x += x, x *= x); я своих сотрудников увольняю.
 
У операторов и конструкций языка обычно есть вполне строгий приоритет. Какой приоритет у разных реализаций крестов "в среднем по палате" - не скажу, т. к. очень давно не касался их. Ссылка на спецификацию гуглится по разновидности C++ (есличо, их много).
 
Сначала будут сделаны преобразования, подсчеты, а потом уже будет вызвана функция. Сразу не понял вопроса. Даже не задумывался, но думаю будет слева на право идти по очереди.
 
Сначало выполнится x *= x, затем x += x Соответственно сам x будет изменен дважды, а в функцию попадут результаты последнего преобразования. то есть ответ 16 будет... Интересный вопрос))) Проверил на mingw и MS результат один и тот же. как по мне лучше так не делать...
179740033_f67a001dfe837187cc43805adc4d957f_800.png
 
Как я понял, стандарт не регламентирует последовательность вычисления аргументов The evaluations of the postfix expression and of the arguments are all unsequenced relative to one another.
 
Назад
Сверху