黑马程序员技术交流社区

标题: 求这个程序怎么解??死循环、?还是a=4?? [打印本页]

作者: huijiadanipp    时间: 2016-2-2 13:35
标题: 求这个程序怎么解??死循环、?还是a=4??
-(void)test{int a=2;a++;
[self run];
nslog(@"a=%d",a)
}

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

作者: qiujunwen123    时间: 2016-2-2 17:25
你的main函数应该是 [对象 test]吧?这样的话两个int a 是什么鬼?怎么感觉不报错要是有答案,答案也是a=3啊
作者: 一枚小刁民    时间: 2016-2-2 19:46
两个a是没有关系的。最后输出的是三  还有 你的main()函数呢
作者: ccgg54t3    时间: 2016-2-2 21:10
self调的不是本身的test方法,而是run,所以不会死循环,所嵌套的方法run的值不会影响到test,所以a最后的值就是3.
作者: 847374032    时间: 2016-2-3 18:02
同问,main函数呢!
作者: huijiadanipp    时间: 2016-2-4 22:27
ccgg54t3 发表于 2016-2-2 21:10
self调的不是本身的test方法,而是run,所以不会死循环,所嵌套的方法run的值不会影响到test,所以a最后的值就 ...

明白了,多谢!!!{:2_31:}
作者: huijiadanipp    时间: 2016-2-4 22:29
847374032 发表于 2016-2-3 18:02
同问,main函数呢!

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

{:3_46:}!!!真的哦
作者: 曦正    时间: 2016-2-15 21:11
huijiadanipp 发表于 2016-2-15 19:49
!!!真的哦

这样的语法应该没办法运行才对吧?你把返回值去掉再试试
作者: huijiadanipp    时间: 2016-2-16 23:05
好的 我试试
作者: 水丹青    时间: 2016-2-16 23:46
楼主666666666
作者: huijiadanipp    时间: 2016-2-17 20:57
水丹青 发表于 2016-2-16 23:46
楼主666666666

一点都不6666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2