讀古今文學網 > C語言解惑 > 1.9 記住我就會受益無窮 >

1.9 記住我就會受益無窮

【例1.6】分析下面程序存在的錯誤。


#include <stdio.h>
void main
()
{
;
     printf
("
輸入x
:"
);
     double x
;
     scanf
("%Lf"
,x
); 
     printf
("
輸出x
:%f\n"
,x
);
  

首先可以借助編譯器查錯。編譯後給出如下錯誤信息。


error C2143
: syntax error 
: missing '
;' before 'type'
error C2065
: 'x' 
: undeclared identifier
fatal error C1004
: unexpected end of file found
  

注意3條提示只是參考,並不準確,例如主程序「{」處多了「;」號,這就無法判斷,所以最後的確認還需要自己分析。

第1條信息定位於double語句,錯誤信息就不準確了,但可以判斷出是聲明變量的位置錯誤,應該把x的聲明提到最前面。第2條信息定位於scanf語句,錯誤信息說沒有聲明變量x,其實是聲明的位置不對,只要改正了前一個錯誤語句,這條錯誤信息就沒有了。第3條信息很準確,文件沒有結束,少了一個「}」號。由此可見,在排錯時,如果錯誤信息很多,可以先改有把握的,然後再編譯看看,不要按錯誤信息的順序埋頭苦幹,有時改正一個錯誤,會消除很多錯誤信息。

下面根據一個實際程序,用註釋方式給出基本程序構成格式,記住它可以避免很多錯誤,達到事半功倍的效果。

【例1.7】基本程序構成格式示例。


#include <stdio.h>               //  
預編譯語句,注意尾部沒有「;」號
void main
( 
)               // 
主程序,別忘記是圓括號( 
)
{                         // 
主程序開始
      double x
;               // 
變量聲明在最前面
      printf
("
輸入x
:"
);          // 
程序語句用「;」號結束 
      scanf
("%Lf"
,&x
);          // 
在scanf
語句中,基本變量前面一定要加&
號
      printf
("
輸出x
:%f\n"
,x
);     // 
程序語句用「;」號結束
}                         //
主程序結束
  

【例1.8】對照給出的結構,分析下面程序的錯誤。


 #include <stdio.h>               //
預編譯
 #define MAX 9.5
;
 #define MIN 1.5
;
 #define SUB MAX-MIN
;
 void main
( 
)              
 {                         //
主程序開始
     double answer= SUB
;
     printf
("
差=%f\n"
,answe
); 
 }                         //
主程序結束
  

對照給出的規範:預編譯語句,尾部不能有「;」號,可知本程序3條#define宏定義語句多了分號。另外,printf中的answer少了字母r。