一、聲明和定義的不一致
#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-hant/n/333114.html
微信掃一掃
支付寶掃一掃