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

  • 相关阅读:
    1869六度分离
    1162Eddy's picture
    hdu2544
    3549Flow Problem
    1272小希的迷宫
    2112HDU Today(Dijkstra)
    1878欧拉回路
    hdu1116Play on Words
    2112HDU Today(SPFA)
    在程序中动态创建视图
  • 原文地址:https://www.cnblogs.com/qiernonstop/p/3909592.html
Copyright © 2020-2023  润新知