为了账号安全,请及时绑定邮箱和手机立即绑定

请问java和c中for循环的区别

请问java和c中for循环的区别

hy_wang 2017-08-23 21:20:16
请问关于C中for循环和 java中for循环的区别 除了  c中for循环变量不能再表达式中声明  也就是for(int b=3;b<5;B++){}而java中确可以使用这个格式。请问除了这个 java和c中的for循环还有什么区别
查看完整描述

1 回答

?
onemoo

TA贡献883条经验 获得超454个赞

你说的“c中for循环变量不能再表达式中声明”并不完全正确。在新的 C99 及之后的标准中,for 语句小括号中的第一个部分可以是表达式,也可以是声明。 所以在 C 中你完全可以这样写。


而且还有其他区别:

C99 后,for 语句也有自己的作用域了,小括号中声明的变量在这个作用域中,并且在 for 语句结束后会退出作用域。

而且需要注意的是:循环体本身也有自己的作用域,和 for 语句小括号的作用域不一样。所以你可以在循环体中重定义小括号中声明的变量:

// C 代码
for (int b = 3; b < 5; b++) {
    double b = 3.0;  // 这样写是可以的!
}

而 Java 中 for 的小括号和循环体都在一个作用域中,所以你不能这样做。


对于 Java 还需要注意的是:由于 Java 的“作用域隐藏规则”,你不能在 for 循环中重定义 for 语句所在作用域中的变量。比如这样就不行:

// Java 代码
int b;
for (int b = 3; b < 5; b++) {}  // for 中的 b 并不能隐藏掉外面的 b,所以会报错

但在 C 中,一个作用域中的名字会隐藏掉外部作用域中的同名者,所以你可以像上面那样写。

查看完整回答
反对 回复 2017-08-25
  • 1 回答
  • 1 关注
  • 2164 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信