有人說C語言最難學,
或最讓初學者具挫折感的地方,
就是偵錯,
在此,
提供各位同學一些簡單偵錯技巧.
但曾老師認為, 寫程式遇到錯誤時,
想辦法解決才是學習的開始。
大家必須要注意程式的錯誤訊息(Error
Message),
因為錯誤訊息都是英文,
加上部分專業術語, 關鍵字或保留字等...
對於高中同學來說或許是一個門檻,
但是, 只要能夠抓出問題的所在, 不要用
" 猜 " 的。
反覆練習,必能日有所長!
- 錯誤種類
大致上,C出現錯誤的種類,
不外乎兩種:語法錯誤(Syntax Error)和邏輯錯誤(Logical
Error)
大部分初學者容易有語法錯誤問題,
然而當寫程式功力越來越高時,就容易有邏輯思維上的錯誤出現;
而邏輯上的錯誤,也是比較難讓他人發現與除錯。
在此,因為課程關係,我們先舉兩個語法錯誤的範例,
讓大家瞭解錯誤的格式與訊息解讀.
- 範例1:(使用FreeBSD4.10版gcc編譯)
#include<stdio.h>
void main( )
{
printf(" Hi I
am david ! ");
}
編譯後,會出現什麼結果?
myfirstc.c:
In function `main':
myfirstc.c:3:
warning:
return type of `main' is not `int'
什麼意思?
- 範例2:請輸入以下程式
#include<stdio.h>
main( )
{
int a=1
printf(" a = %d \n",a);
}
程式出現
test.c:
In function `main':
test.c:5:
syntax
error
before `printf'
請細心觀察,你認為程式錯在哪嗎?
要如何更正?
- [進階] 練習
#include <stdio.h>
main( )
{
char a;
int b;
short int c;
long int d;
unsigned int e;
float f;
double g;
long double h;
printf(" The char: %d
Bytes\n",sizeof(a));
printf(" The int: %d
Bytes\n",sizeof(b));
printf(" The short
int: %d Bytesn\",sizeof(c));
printf(" The long int:
%d Bytes\n",sizeof(d));
printf(" The unsigned
int: %d Bytes\n",sizeof(e));
printf(" The float:
%d Bytes\n",sizeof(f));
printf(" The double:
%d Bytes\n",sizeof(g));
printf(" The long
double: %d Bytes\n",sizeof(h));
}
請找出上述程式的錯誤?
二分逼近法介紹。
邊寫邊編法。
- 編譯轉換過程
原始碼→前置處理器→擴充檔→詞彙分析器
→符記化資料→語法剖析器→中間碼
→最佳化程式→最佳化中間碼→程式產生器→
組合語言→組譯程式→重置模組→可執行模組。
|