我正在尝试解决3n + 1问题,我有一个for
看起来像这样的循环:
for(int i = low; i <= high; ++i) { res = runalg(i); if (res > highestres) { highestres = res; } }
不幸的是,当我尝试使用GCC编译时,我收到此错误:
3np1.c:15:错误:'for'循环初始声明在C99模式之外使用
我不知道C99模式是什么.有任何想法吗?
我试着i
在循环之外声明!
祝你好运解决3n + 1 :-)
这是一个例子:
#include
int main() {
int i;
/* for loop execution */
for (i = 10; i < 20; i++) {
printf("i: %d\n", i);
}
return 0;
}
在这里阅读更多关于C中for循环的内容.
有一个编译器开关启用C99模式,其中包括允许在for循环内声明变量.要打开它,请使用编译器开关-std=c99
或者如@OysterD所说,在循环外声明变量.
要在CodeBlocks中切换到C99模式,请执行以下步骤:
单击" 项目/构建"选项,然后在" 编译器设置"选项卡中选择"子选项卡其他选项",并放置-std=c99
在文本区域中,然后单击" 确定".
这将为您的编译器打开C99模式.
我希望这会对某人有所帮助!
我也得到了这个错误.
for (int i=0;i<10;i++) { ..
在C89/C90标准中无效.正如OysterD所说,你需要这样做:
int i; for (i=0;i<10;i++) { ..
您的原始代码允许使用C99及更高版本的C语言标准.
@Blorgbeard:
C99的新功能
内联函数
变量声明不再局限于文件范围或复合语句的开头
几种新的数据类型,包括long long int,可选的扩展整数类型,显式布尔数据类型和表示复数的复杂类型
可变长度数组
支持以//开头的单行注释,如BCPL或C++
新的库函数,例如snprintf
新的头文件,例如stdbool.h和inttypes.h
类型泛型数学函数(tgmath.h)
改进了对IEEE浮点的支持
指定的初始化者
复合文字
支持可变参数宏(变量arity的宏)
限制资格以允许更积极的代码优化
http://en.wikipedia.org/wiki/C99
C99之旅
如果你在C中编译改变
for (int i=0;i<10;i++) { ..
至
int i; for (i=0;i<10;i++) { ..
您也可以使用C99开关组进行编译.在编译行中输入-std = c99:
gcc -std=c99 foo.c -o foo
参考:http://cplusplus.syntaxerrors.info/index.php?title ='for'_loop_initial_declaration_used_outside_C99_mode