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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Makise_Kurisu 中级黑马   /  2015-12-5 00:00  /  1416 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

19 个回复

倒序浏览
可以的,因为你给y赋了值
回复 使用道具 举报
去测试一下,看编译能不能通过。
回复 使用道具 举报
没问题,参与运算了,最后是2
回复 使用道具 举报
int x;
                  for(x=1;x>2;x=x+2)
可以写为:
int x=1;
                  for(x;x>2;x=x+2)
回复 使用道具 举报
可以的,程序从上往下执行,会将 int y=x+1; 这个语句执行一次。
执行完后,y=2
回复 使用道具 举报
再续啸傲 来自手机 中级黑马 2015-12-5 12:55:02
7#
get and look look
回复 使用道具 举报
八宝 中级黑马 2015-12-5 13:38:44
8#
可以 你的int x 声明在for循环外面,然后for循环的语句会执行到第一句初始化你的x变量值,如果条件没达成不会执行for里面的语句x已经被赋值了,因此可以参与y的运算
回复 使用道具 举报
可以参与y的运算。因为x的作用域是整个函数体,其中包括定义y的语句部分,所以能够参与运算。
回复 使用道具 举报
可以的,y赋值了
回复 使用道具 举报
本帖最后由 虔诚精 于 2015-12-5 20:31 编辑

for循环里给x赋值为1了,这样
int x=1;
                  for(x;x>2;x=x+2)编译不能通过,因为for(初始化值,条件表达式,增量){}
回复 使用道具 举报
作用域的问题呀,在for语句,最后到不了y的赋值语句把!没编译,你可以先编译看下。。
回复 使用道具 举报
可以通过把
回复 使用道具 举报
嗯,可以,这就是变量的作用域范围,,你可以 多查下这方面的知识
回复 使用道具 举报
zmttt 中级黑马 2015-12-5 21:44:19
15#
可以  y的运算在for循环外,结果为2
回复 使用道具 举报
因为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:13
因为x的值小于2,在判断时候为false所以不会执行里面的循环体,跳出循环,x不能参加y值得运算
int x;
for( ...

打错了 多大了一个不  x能参加y值运算
回复 使用道具 举报
新手报到
回复 使用道具 举报
学完了  回头在看还是有点蒙啊!
回复 使用道具 举报
楼上说的很正确    参与运算但不循环
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马