为什么这段代码会一直出现这个错误?语法错误:循环变量不正确

时间:2013-08-05 19:53:43

标签: c loops for-loop syntax

这是从Ritchie的C编程语言中复制的。我试图做一些修改,但它总是卡在for循环(第7行)

#include <stdio.h>

main()
{

    int fahr;

    for(fahr = 0; fahr <= 300; fahr = fahr + 20)
    {
        printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));

    }

}

错误:./ farn.c:8:./ farn.c:语法错误:循环变量错误

4 个答案:

答案 0 :(得分:4)

我转载了你的问题。在Ubuntu上,/bin/shdash符号链接。

$ dash ./farn.c
./farn.c: 8: Syntax error: Bad for loop variable

Bourne shell解释器(或其衍生产品之一)正确解释C程序是非常罕见的。

使用C编译器编译程序,并运行可执行文件(或者,如果可以找到,则使用C语言解释器)。在Ubuntu上,您可以使用gcc

$ gcc -W -Wall -Werror -pedantic -std=c99 farn.c -o farn
$ ./farn

由于K&amp; R书籍早于C.99,上述编译命令将产生错误:

cc1: warnings being treated as errors
farn.c:4: warning: return type defaults to 'int'

要解决此问题,您只需使用明确的main()返回类型更新int的声明即可。在C.99中,遇到}末尾的main()会隐式返回0,因此添加int就足够了。

#include <stdio.h>

int main()
{

    int fahr;

    for(fahr = 0; fahr <= 300; fahr = fahr + 20)
    {
        printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));

    }

}

答案 1 :(得分:0)

您的代码正确编译。这是证据:http://codepad.org/hryZ2dEm

我还在main函数中添加了返回类型和返回指令,以使您的代码符合标准。尝试使用我插入的小更改。

如果您还有问题,请告诉我。

答案 2 :(得分:0)

除了你以非常懒惰的方式定义main()并且缺少return语句之外,我没有看到上面的代码有任何错误。在解决了这两个问题后,它编译并运行得很好,具有以下选项:

gcc temperature.c -g -Wall -Werror -pedantic -o temperature

顺便说一句,main的入口点应该是:

int main(void) // You *can* leave void out here, but it's best to be explicit
int main(int argc, char* argv[]) // 2nd arg could also be char** argv

你应该总是从main返回一个整数值,通常返回0表示程序成功运行。

答案 3 :(得分:0)

感谢大家的建议。我像老板一样使用GCC解决了我的问题。

gcc farn.c -o farn

然后

./farn 

效果很好。 : - )