Здравствуйте, Аноним, Вы писали:
А>Всем привет!
А>Сейчас с удивлением обнаружил, что аргументы функции вызываются в обратном порядке. Т.е. в примере: А>
А>С(A(),B());
А>
А>сначала вызовется в B, а затем A, а не наоборот. Это везде так или только в моем msvc8?
Порядок вызова аргументов функции зависит от компилятора.
Здравствуйте, Stuw, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>Всем привет!
А>>Сейчас с удивлением обнаружил, что аргументы функции вызываются в обратном порядке. Т.е. в примере: А>>
А>>С(A(),B());
А>>
А>>сначала вызовется в B, а затем A, а не наоборот. Это везде так или только в моем msvc8?
S>Порядок вызова аргументов функции зависит от компилятора.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Stuw, Вы писали:
S>>Порядок вызова аргументов функции зависит от компилятора.
А>А в каких компиляторах он прямой?
Зависит от компилятора — значит компилятор решает каждый раз так, как ему в этом конкретном случае удобно.
Просто стандарт не гарантирует никакого порядка => поведение в твоем случае не определено.
Здравствуйте, Аноним, Вы писали:
А>Всем привет!
А>Сейчас с удивлением обнаружил, что аргументы функции вызываются в обратном порядке. Т.е. в примере: А>
А>С(A(),B());
А>
А>сначала вызовется в B, а затем A, а не наоборот. Это везде так или только в моем msvc8?
Для разруливания данной ситуации я на уровне codestyle запретил данные конструкции ( никогда не писать функции в параметрах функций )
Также этот пункт способствует облегчению дебага
А>Еще, если пользоваться конструкциями типа: А>
А>то при ложном b функция гарантированно не вызывается в первой строке, а при истинном — во второй. На это можно полагаться?
Да, если не перегружены.
И еще могу добавить что компиляторы могут давать возможность что func() не выполнится вообще: в первом случаии если b == false во втором если b == true
Здравствуйте, IROV.., Вы писали: IRO>И еще могу добавить что компиляторы могут давать возможность что func() не выполнится вообще: в первом случаии если b == false во втором если b == true
Блин хотел сказать что эту опцию можно выключать
Здравствуйте, Аноним, Вы писали:
А>Всем привет!
А>Сейчас с удивлением обнаружил, что аргументы функции вызываются в обратном порядке. Т.е. в примере: А>
А>С(A(),B());
А>
А>сначала вызовется в B, а затем A, а не наоборот. Это везде так или только в моем msvc8?
А>Еще, если пользоваться конструкциями типа: А>
Здравствуйте, wilddony, Вы писали:
W>Порядок передачи аргументов в функцию зависит от модели вызова.
Если модель не стековая то какбы сказать.. порядок не упорядочен. Тоесть об порядке можно говорить только при наличии стека. С другой стороны порядок вычислений может не совподать с порядком передачи. Микрософт не гарантирует прядка
Здравствуйте, Programador, Вы писали:
P>Здравствуйте, wilddony, Вы писали:
W>>Порядок передачи аргументов в функцию зависит от модели вызова. P>Если модель не стековая то какбы сказать.. порядок не упорядочен. Тоесть об порядке можно говорить только при наличии стека. С другой стороны порядок вычислений может не совподать с порядком передачи. Микрософт не гарантирует порядка
А нам с этим беспорядком работай потом Улыбнуло!
Не стыдно попасть в дерьмо, стыдно в нём остаться!