关于读入

P2853 [USACO06DEC] Cow Picnic S

实参求值顺序(`add(read(), read())`)_未指明_,不存在从左到右或者从右到左。
by ud2_ @ 2022-12-08 21:42:57


好像大部分情况下是从右到左
by Ruiqun2009 @ 2022-12-08 21:44:03


第二份代码执行 `add(read(), read())` 并读入 `3 5` 时,似乎会执行 `add(5,3)` 而不是 `add(3,5)`
by ImposterAnYu @ 2022-12-08 21:51:42


这不是经典 ub 吗
by Sky390 @ 2022-12-08 22:24:42


@[ud2_](/user/206953) @[Sky390](/user/806835) 事实上不是UB,这是被规定从右到左执行的
by liangbowen @ 2022-12-08 22:33:03


@[ud2_](/user/206953) 参考 `printf` 里面如果写函数是从右到左执行再从左到右输出的
by __er @ 2022-12-08 23:04:07


闲话:%%%ud2 dalao
by __er @ 2022-12-08 23:04:30


@[liangbowen](/user/367488) C++ 没有规定实参求值的顺序,另外 C++ 规定了“如果没有规定顺序那么‘无顺序’”。 如果认为有规定那么给个链接? --- 题外话:这样写确实没有 UB。虽然实参列表“无顺序”(可以交错执行),但函数调用“顺序不确定”(必须先后执行,谁先谁后不一定);`read()` 是函数调用,UB 只在“无顺序”时出现。
by ud2_ @ 2022-12-08 23:57:05


|