黑马程序员技术交流社区

标题: for循环与变量的问题~ [打印本页]

作者: Makise_Kurisu    时间: 2015-12-5 00:00
标题: for循环与变量的问题~
for循环外定义了一个变量,在for循环里第一个表达式初始化,这个变量的初始化值可以被循环外的其他运算调用
如下:
                 int x;
                 for(x=1;x>2;x=x+2){
                         System.out.println("执行");
                      }
                 int y=x+1;
                 
问 循环没有执行, x初始化为1,能否参与y的运算? 为什么?

作者: 汐枫wait    时间: 2015-12-5 07:18
可以的,因为你给y赋了值
作者: 雪山飞熊    时间: 2015-12-5 09:21
去测试一下,看编译能不能通过。
作者: Kalsifa    时间: 2015-12-5 09:49
没问题,参与运算了,最后是2
作者: 王帅---    时间: 2015-12-5 10:45
int x;
                  for(x=1;x>2;x=x+2)
可以写为:
int x=1;
                  for(x;x>2;x=x+2)

作者: hi2015    时间: 2015-12-5 11:08
可以的,程序从上往下执行,会将 int y=x+1; 这个语句执行一次。
执行完后,y=2
作者: 再续啸傲    时间: 2015-12-5 12:55
get and look look
作者: 八宝    时间: 2015-12-5 13:38
可以 你的int x 声明在for循环外面,然后for循环的语句会执行到第一句初始化你的x变量值,如果条件没达成不会执行for里面的语句x已经被赋值了,因此可以参与y的运算
作者: Jerson_ZF    时间: 2015-12-5 14:37
可以参与y的运算。因为x的作用域是整个函数体,其中包括定义y的语句部分,所以能够参与运算。
作者: 虔诚精    时间: 2015-12-5 20:28
本帖最后由 虔诚精 于 2015-12-5 20:31 编辑

for循环里给x赋值为1了,这样
int x=1;
                  for(x;x>2;x=x+2)编译不能通过,因为for(初始化值,条件表达式,增量){}

作者: 秋alin    时间: 2015-12-5 21:23
作用域的问题呀,在for语句,最后到不了y的赋值语句把!没编译,你可以先编译看下。。
作者: hxh362805079    时间: 2015-12-5 21:33
可以通过把
作者: Good_Man    时间: 2015-12-5 21:38
嗯,可以,这就是变量的作用域范围,,你可以 多查下这方面的知识
作者: zmttt    时间: 2015-12-5 21:44
可以  y的运算在for循环外,结果为2
作者: LSD-ZWH    时间: 2015-12-5 22:13
因为x的值小于2,在判断时候为false所以不会执行里面的循环体,跳出循环,x不能参加y值得运算
int x;
for(x=1;x>2;x++)
你的x是定义在for循环外的
如果你写的是
for(int x = 1;x>2;x++)
这样的话不会参与y值得运算,而且会报错
作者: LSD-ZWH    时间: 2015-12-5 22:15
LSD-ZWH 发表于 2015-12-5 22:13
因为x的值小于2,在判断时候为false所以不会执行里面的循环体,跳出循环,x不能参加y值得运算
int x;
for( ...

打错了 多大了一个不  x能参加y值运算
作者: 金金金小天    时间: 2015-12-5 22:24
新手报到
作者: liuzhipeng    时间: 2015-12-6 00:25
学完了  回头在看还是有点蒙啊!
作者: 小小的程序员    时间: 2015-12-6 09:15
楼上说的很正确    参与运算但不循环




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