dulox @ 2024-11-27 21:43:01
f( read() , read() )
a=read(),b=read(); f(a,b);
debug时发现输入 1,2,5
change(int ll,int rr,int d);
结果传入的是(ll=5,rr=2,d=1) ????? 想不通
by 鱼跃于渊 @ 2024-11-27 22:04:43
@liangbowen 感谢。
by 鱼跃于渊 @ 2024-11-27 22:10:44
@liangbowen 我查到这个:
表达式 function 以及作为参数提供的所有表达式 arg1、arg2、arg3 等,以任意顺序进行评估,无序 彼此之间。(直到 C++17)
https://cppreference.cn/w/cpp/language/operator_other
by 鱼跃于渊 @ 2024-11-27 22:12:19
以及:
任何表达式任何部分的求值顺序,包括函数参数的求值顺序都是未指定的(下面列出了一些例外)。编译器可以按任何顺序计算操作数和其他子表达式,并且在再次计算相同表达式时可以选择另一个顺序。
在 C++ 中没有从左到右或从右到左求值的概念。这不要与运算符的从左到右和从右到左结合性混淆:表达式 a() + b() + c() 由于运算符 + 的从左到右结合性而被解析为 (a() + b()) + c(),但在运行时 c() 可以在 a() 或 b() 之前、之后或之间求值。
https://cppreference.cn/w/cpp/language/eval_order
by LionBlaze @ 2024-12-08 11:45:17
@liangbowen @vegetable_chili 我记得 __cdecl
是这样的。