这是从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:语法错误:循环变量错误
答案 0 :(得分:4)
我转载了你的问题。在Ubuntu上,/bin/sh
与dash
符号链接。
$ 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
效果很好。 : - )