yycGIS

我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容。 我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系。

Less is more, more is different!

导航

error C2143: syntax error : missing ';' before 'type'

许久之前,就想看看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\n", 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\n",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\n", 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\n",fahrr,(5.0/9.0)*(fahrr-32));
25     }
26     printf("Press ENTER to continue...");
27 }

结果正常通过。

 

在网上看了一番之后,得出结论:

  在纯C中,在一个代码块中变量声明必须在最前面。

 

posted on 2014-08-13 11:21  yycGIS  阅读(2241)  评论(0编辑  收藏  举报