一、聲明和定義的不一致
#include<stdio.h> int main() { int a; a = 10; printf("a的值是%d", a); return 0; } float a; // 這裡定義了一個叫做a的浮點型變量
在上述的代碼中,我們想要定義一個整型變量a,但是在後面卻定義了一個浮點型變量a,這就出現了聲明和定義不一致的錯誤。這個錯誤在編譯時會報錯:前面的變量已經被定義了,無法再重新定義相同的變量。
解決這個問題的方式很簡單,只需要將浮點型變量a的名稱修改一下即可,如下所示:
#include<stdio.h> int main() { int a; a = 10; printf("a的值是%d", a); return 0; } float b; // 修改為b的浮點型變量
二、括號調用的不匹配
#include<stdio.h> int main() { int sum = add(1, 2); printf("1加2的和是%d", sum); return 0; } int add(int a, int b) { return a + b; }
在上述的代碼中,我們在main函數中調用了一個add函數,但是add函數的定義在main函數後面。這個問題可以通過加上函數聲明來解決:
#include<stdio.h> int add(int a, int b); // 添加函數聲明 int main() { int sum = add(1, 2); printf("1加2的和是%d", sum); return 0; } int add(int a, int b) { return a + b; }
三、語法錯誤
#include<stdio.h> int main(); { printf("hello world\n"); return 0; }
在上述的代碼中,我們在main函數後面多了一個分號,這個分號使得編譯器認為main函數的定義結束了,後面的代碼就成了單獨的代碼塊。
解決這個問題只需要將分號刪除即可:
#include<stdio.h> int main() { printf("hello world\n"); return 0; }
四、符號未定義
#include<stdio.h> int main() { printf("a的值是%d\n", a); // a未定義 return 0; }
在上述的代碼中,我們調用了一個未定義的變量a,這樣的操作會導致符號未定義的錯誤。
解決這個問題的方法是定義一個變量a,或者將調用a的代碼刪除。
五、使用了未聲明的函數
#include<stdio.h> int main() { int sum = add(1, 2); // add函數沒有聲明 printf("1加2的和是%d", sum); return 0; } int add(int a, int b) { return a + b; }
在上述的代碼中,我們調用了一個未聲明的函數add,這個函數的定義在main函數的後面。由於編譯器不知道這個函數的存在,就會報錯。
解決這個問題的方法是在調用add函數之前添加一個函數聲明。
六、未定義的變量
#include<stdio.h> int main() { int a; printf("a的值是%d", b); // b未定義 return 0; }
在上述的代碼中,我們調用了一個未定義的變量b,這個變量在程序中沒有被定義過,所以會導致未定義的變量錯誤。
解決這個問題的方法是定義一個變量b。
原創文章,作者:DRFQX,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/333114.html