快读参数居然是倒着输入的??为什么???

P3372 【模板】线段树 1

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 是这样的。


上一页 |