许久之前,就想看看C和C++,看看这两种神奇的编程语言,但是一直被这样或者那样的琐事给耽搁了(狂喷自己的拖延症)。
今天翻开自己的移动硬盘找到一本古老的书籍:《The C Programming Language 中文版》,浏览一下,缓解一下内心的空虚。
事情并没有想象中的那么顺利,刚看了一个例子的两种方法,但是当把他们组合起来时,就遇到了困难:
错误提示:
error C2143: syntax error : missing ';' before 'type'
error C2065: 'fahrr' : undeclared identifier
代码如下:(hello.c)
1 #include <stdio.h> 2 main() 3 { 4 float fahr, celsius; 5 float lower, upper, step; 6 7 lower = 0; /* 温度表的下限*/ 8 upper = 300; /* 温度表的上限*/ 9 step = 20; /* 步长*/ 10 11 fahr = lower; 12 while (fahr <= upper) { 13 celsius = 5.0 * (fahr-32.0) / 9.0; 14 printf("%3.0f %6.1f ", fahr, celsius); 15 fahr = fahr + step; 16 } 17 18 int fahrr; 19 20 for (fahrr=0;fahrr<=300;fahrr=fahrr+20) 21 { 22 printf("%3d %6.1f ",fahrr,(5.0/9.0)*(fahrr-32)); 23 } 24 printf("Press ENTER to continue..."); 25 }
错误出现在18和20行;
但是如果以第18行分开上面和下面都是可以执行的;
一番百度之后:
1.有人说:这段代码在 VC++ 和 DEV C++ 下调试是通过的,自己试了一下,发现在VC++下并没有通过;
2.有人说:用的是C语言环境,要把变量定义放到前面,改了一下:
1 #include <stdio.h> 2 main() 3 { 4 float fahr, celsius; 5 float lower, upper, step; 6 7 int fahrr; //修改的部分 8 9 lower = 0; /* 温度表的下限*/ 10 upper = 300; /* 温度表的上限*/ 11 step = 20; /* 步长*/ 12 13 fahr = lower; 14 while (fahr <= upper) { 15 celsius = 5.0 * (fahr-32.0) / 9.0; 16 printf("%3.0f %6.1f ", fahr, celsius); 17 fahr = fahr + step; 18 } 19 20 //int fahrr; //修改的部分 21 22 for (fahrr=0;fahrr<=300;fahrr=fahrr+20) 23 { 24 printf("%3d %6.1f ",fahrr,(5.0/9.0)*(fahrr-32)); 25 } 26 printf("Press ENTER to continue..."); 27 }
结果正常通过。
在网上看了一番之后,得出结论:
在纯C中,在一个代码块中变量声明必须在最前面。