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中,在一个代码块中变量声明必须在最前面。

 

转载于:https://www.cnblogs.com/qiernonstop/p/3909592.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值