A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

-(void)test{int a=2;a++;
[self run];
nslog(@"a=%d",a)
}

-(void) run{
int a;
return  a++;
}

15 个回复

倒序浏览
你的main函数应该是 [对象 test]吧?这样的话两个int a 是什么鬼?怎么感觉不报错要是有答案,答案也是a=3啊
回复 使用道具 举报
两个a是没有关系的。最后输出的是三  还有 你的main()函数呢
回复 使用道具 举报
self调的不是本身的test方法,而是run,所以不会死循环,所嵌套的方法run的值不会影响到test,所以a最后的值就是3.
回复 使用道具 举报
同问,main函数呢!
回复 使用道具 举报
ccgg54t3 发表于 2016-2-2 21:10
self调的不是本身的test方法,而是run,所以不会死循环,所嵌套的方法run的值不会影响到test,所以a最后的值就 ...

明白了,多谢!!!{:2_31:}
回复 使用道具 举报

抱歉,我没表达清楚,与main函数无关,现在明白了
回复 使用道具 举报
建议你从C语言开始学,从你的代码可以看出来你的基础比较差
回复 使用道具 举报
应该是3才对吧,run方法中定义的a在方法退出时,就会被销毁的,所以打印的应该是test中定义的方法。
回复 使用道具 举报
答案是3,你弄清楚局部变量的作用域你就明白的了,test方法与run方法里面的变量a分别在栈中的空间是不同的,也就是test中的a的作用域只是在test中,而run中的a的作用域只是在run中
回复 使用道具 举报
run还能有返回值???
回复 使用道具 举报
曦正 发表于 2016-2-13 18:09
run还能有返回值???

{:3_46:}!!!真的哦
回复 使用道具 举报

这样的语法应该没办法运行才对吧?你把返回值去掉再试试
回复 使用道具 举报
好的 我试试
回复 使用道具 举报
楼主666666666
回复 使用道具 举报

一点都不6666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马