鱼C论坛

 找回密码
 立即注册
查看: 1454|回复: 6

很简单的问题但是我不会

[复制链接]
发表于 2016-5-8 12:56:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int f(int i){ return ++i; }
int g(int &i){ return ++i; }
int main(){
  int a(0),b(0);//这边是什么意思。然后整个程序帮我解析一下,谢谢。
  a+=f(g(a));
  b+=f(f(b));
  cout<<a<<"\t"<<b;
  return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-8 13:25:02 | 显示全部楼层
  int a(0),b(0);        // 这里是C++用法,含义是用括号内的数据初始化变量 - 等同于int a = 0;
  a+=f(g(a));
  // 从内往外解析:先调用g(a),然后调用f(x) - <x = g(a)>    然后结果就容易了a += (之前的结果)。
  // 如上例中
  // a = 0
  // g(a) 之后,a = 1,函数返回1
  // f(g(a))之后,a不变,函数返回2
  // a += f(g(a)) 之后,a += 2 -> a = 3 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-8 14:05:28 | 显示全部楼层
这不是C语言咯?看不太懂,围观
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-9 20:21:04 | 显示全部楼层

那f(x)和g(x)有什么区别吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-9 20:21:36 | 显示全部楼层
留恋流年 发表于 2016-5-8 14:05
这不是C语言咯?看不太懂,围观

c++。C语言的延伸。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-9 20:24:16 | 显示全部楼层

我懂了,这个跟冒泡法的swap的原理是一样的。要swap两个数的地址才有用。谢谢大神。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-9 20:27:31 | 显示全部楼层
我叫淳子 发表于 2016-5-9 20:21
那f(x)和g(x)有什么区别吗?

g(int &x)
x就是引用,可以修改x的值。
f(int x)
只是简单的值传递,x修改没屌用。。

比如:x = 2;
f(x) -> x还是2
g(x)-> x就是3了···
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 00:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表