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

关于for循环问题

关于for循环问题

C
four7 2016-11-12 11:14:31
为什么在for()括号里定义一个类型会不行?求解  是不是编译器应该设置一下 按道理应该可以在括号里定义的啊
查看完整描述

3 回答

已采纳
?
望远

TA贡献1017条经验 获得超1032个赞

定义文件为.cpp文件
查看完整回答
2 反对 回复 2016-11-12
?
onemoo

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

你采纳的那个答案没回答问题的核心。


C语言的C99标准中,for语句小括号中的第一个部分可以是表达式,也可以是声明(所以你可以在这里定义一个类型),之前的老标准中这里只允许放表达式。  也许是你编译器默认执行老标准。

另外,C99标准中for语句小括号中的这三个部分都算在单独的作用域中,所以你可以在第一个部分那里定义和前面代码中同名的变量。 但请注意:这个作用域不同于for语句大括号括起的循环体! 循环体作用域算是嵌套在这个作用域之中的,这一点在重复定义同名对象时会看出区别。


为什么改为.cpp就可以了?  那大概是编译器会把代码当作是C++来编译。 C和C++是两门不同的语言,不要因为它们长得像就觉得是一回事,事实上C和C++在语法上是有很多区别的:

C++标准中,for语句小括号中的第一个部分既可以是表达式也可以是声明(就像C99标准),所以把代码当作C++就不会报这个错误了。

但另一方面,C++中for语句循环控制的这三个部分循环体都算在整个for作用域之中! 这点和C标准并不一样,你的C代码有可能会遇到由此引起的其他问题...

查看完整回答
反对 回复 2016-11-12
  • 3 回答
  • 1 关注
  • 1351 浏览

添加回答

举报

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