关于for循环问题

为什么在for()括号里定义一个类型会不行?求解  是不是编译器应该设置一下 按道理应该可以在括号里定义的啊

four7
浏览 1358回答 3
3回答

望远

定义文件为.cpp文件

onemoo

你采纳的那个答案没回答问题的核心。C语言的C99标准中,for语句小括号中的第一个部分可以是表达式,也可以是声明(所以你可以在这里定义一个类型),之前的老标准中这里只允许放表达式。  也许是你编译器默认执行老标准。另外,C99标准中for语句小括号中的这三个部分都算在单独的作用域中,所以你可以在第一个部分那里定义和前面代码中同名的变量。 但请注意:这个作用域不同于for语句大括号括起的循环体! 循环体作用域算是嵌套在这个作用域之中的,这一点在重复定义同名对象时会看出区别。为什么改为.cpp就可以了?  那大概是编译器会把代码当作是C++来编译。 C和C++是两门不同的语言,不要因为它们长得像就觉得是一回事,事实上C和C++在语法上是有很多区别的:C++标准中,for语句小括号中的第一个部分既可以是表达式也可以是声明(就像C99标准),所以把代码当作C++就不会报这个错误了。但另一方面,C++中for语句循环控制的这三个部分和循环体都算在整个for作用域之中! 这点和C标准并不一样,你的C代码有可能会遇到由此引起的其他问题...
打开App,查看更多内容
随时随地看视频慕课网APP