社区讨论

C++实参列表从右往左算

灌水区参与者 4已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@m6daeqls
此快照首次捕获于
2025/01/26 15:17
去年
此快照最后确认于
2025/11/04 10:18
4 个月前
查看原帖
省流:C++逗号运算符左结合,但调用函数时计算顺序相反
做题 ing...(P1175)诶等下 #2 到 #10 全 WA 了?而且都显示 line 2 有问题
看题解,测了一组
CPP
(2+3)*(4+5)
第一行2 3 + 4 5 + *没问题嘛……等等怎么先算的 4+5?!
最后发现是这个:
CPP
tr[x]=node(s[p0],dfs(l,p0-1),dfs(p0+1,r));
这里会先调用右边的 dfs,导致后序遍历的“左-右-根”变成“右-左-根”(注:node(int,int,int)是结构体构造函数)
是这样吗?于是写了测试程序:
CPP
#include <bits/stdc++.h>
using namespace std;

int f(int x){
	cout<<"test"<<x<<endl;
	return x;
}

int add(int a,int b){
	return a+b;
}

int main(){
	f(1),f(2);
	cout<<"-----"<<endl;
	add(f(1),f(2));
	return 0;
}
输出是这样的:
CPP
test1
test2
-----
test2
test1
猜想成立,改完 AC,遂写此记。

回复

4 条回复,欢迎继续交流。

正在加载回复...