#include<stdio.h>
//nogood.c -- 有錯誤的程序
int main(void)
( //錯誤1應用花括號,而不是圓括號
int n, int n2, int n3;//錯誤2使用太多int符號,正確爲int n,2n,3n;或
int n;
int 2n;
int 3n;
n = 5;
n2 = n * n;
n3 = n2 * n2;
printf("n=%d,n squared=%d,n cubed=%d\n"n, n2, n3);
return 0;
)
C語言語法錯誤是指:把有效的符號放錯位置。
在調試期間可以快速查看出明顯的錯誤,並且編譯器會幫助你標明錯誤位置(編譯器經常會比真正錯誤的地方滯後一行,認真查看)但是編譯器也會出差,比如某個隱藏語句干預編譯器判斷。有時雖然報錯狠多,但往往修復前幾個就會解決問題,修改時儘量從上到下修改程序。
#include<stdio.h>
//stillbad.c -- 修復語法錯誤的程序
int main(void)
{
int n, n2, n3;
n = 5;
n2 = n * n;
n3 = n2 * 2n;
printf("n=%d,n squared=%d,n cubed=%d\n", n, n2, n3);
return 0;
}
C語言語義錯誤是指:打印在屏幕上的意思與自己想象的不符,但是代碼卻沒有錯誤,計算機可以識別
此程序最終打印的結果是:n=5,n2=25,n3=625。如果對立方熟悉的話,最後一個等數就是不對的,因爲開發者對n3是要表達n的3次方,可是最終的結果是n的4次方。這時計算機識別代碼正確,卻與開發者的想法不一致=。這樣需要學習一下系統的學習程序狀態。
1.想象有3個盒子分別代表n,n2,n3,將第一個數值5賦給n,接着n與n相乘,等於數值25,將25賦予n2,這樣用25*25(
n2與n2相乘)等於數值625,將625賦予n3。這樣就可以看出計算機是用n2*n2來計算 ,而不是n2*n。這個辦法雖然明朗,但是對於大數額的數字無法進行。
2.在關鍵點加入函數print()語句,以便查看變量值的變化與執行情況,從而確定能否運行,如果可以在刪除此函數語句。
3.使用調試器,這個學習調試器即可。