日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

进来,让BUG远离你!

發(fā)布時間:2025/3/15 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进来,让BUG远离你! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

筆者從開始學習C語言到現(xiàn)在,經(jīng)歷過大大小小的BUG不計其數(shù),今天就來給大家分享幾種常見的BUG.

?

(1)書寫標識符時,忽略大小寫

main()

{

? ? int c=5;

? ? printf("%d",C);

}

編譯程序會出錯。C語言區(qū)分大小寫。習慣上,符號常量名用大寫,變量名用小寫表示,以增加可讀性。

(2)忽略變量類型,進行不合法運算

main()

{

? ? float a,b;

? ? printf("%d",a%b);

}

%是求余運算,得到a/b的整余數(shù)。整型變量可進行求余運算,而實型變量則不允許進行求余運算。

(3)將字符常量與字符串常量混淆

char a;

a="b";

字符常量是一對單引號括起來的常量,字符串常量是一對雙引號括起來的常量。C語言規(guī)定以“\0”作為字符串結束標志,它是系統(tǒng)自動加上的,所以字符常量“b”其實包含兩個字符'b' '\0',而把它賦給一個字符變量是不行的。

(4)忽略了“=”和“==”的區(qū)別

if(a==b)a=b;

C語言中,“=”是賦值運算符,“==”是關系運算符。在此代碼中,前者是進行比較,后者是進行賦值。

(5)忘記加分號

c=1

b=2

幾乎在所有編程語言中,都是用“;”代表一句或多句語句的結束。

(6)多加分號

{

? ? z=x/y;

? ? z=z%10;

? ? printf("%d",z);

};

if(a%2==0);

a+=a;

for(i=0;i<5;++i);

{

? ? a-=a;

? ? printf("%d",a);

}

(7)忘加地址運算符“&”

int a;

scanf("%d",a);

scanf函數(shù)的作用是:按照a在內存中的地址將a的值存進去。“&a”是指a在內存中的地址。

(8)輸入數(shù)據(jù)的方式與要求不符

scanf("%a%b",&a,&b);

輸入時不能用“,”將a,b隔開如:3,4;應該用空格

scanf("%a,%b",&a,&b);

此時應輸入a,b 才是正確的

scanf("a=%d,b=%d",&a,&b);

此時應輸入a=3,b=4

(9)輸入字符的格式與要求不一致

在用“%c”格式輸入字符時,空格字符和轉義字符都作為有效字符輸入。

scanf("%c%c%c",&c1,&c2,&c3);

如輸入:a b c 字符“a”賦值給c1,字符“ ”賦值給c2,“b”賦值給c3。正確形式應輸入:abc

(10)輸入、輸出的數(shù)據(jù)類型與所用格式說明符不一致

int a=1;

float b=1.2;

printf("%f%d",a,b);

這種錯誤要引起重視,編譯器不會出現(xiàn)錯誤,但運行結果錯誤。

(11)輸入數(shù)據(jù)時,規(guī)定精度

scanf("%6.2lf",&a);

輸入數(shù)據(jù)時不能規(guī)定精度。

(12)switch語句中漏寫break語句

switch(grade)

{

? ? case 'A':printf("90-100\n");

? ? case 'B':printf("75-89\n");

? ? case 'C':printf("60-74\n");

? ? case 'D':printf("<60\n");

? ? default:printf("put in error\n");

}

由于漏寫了break語句,case只起標識的作用,而不起判斷的作用。當grade的值為A時,程序會從上到下執(zhí)行完,五個printf都輸出。正確的寫法應為:

switch(grade)

{

? ? case 'A':printf("90-100\n");break;

? ? case 'B':printf("75-89\n");break;

? ? case 'C':printf("60-74\n");break;

? ? case 'D':printf("<60\n");break;

? ? default:printf("put in error\n");break;

}

(13)忽視while和do-while語句區(qū)別

while語句

main()

{

? ? int a=0,i;

? ? scanf("%d",&i);

? ? while(i<=10)

? ? {

? ? ? ? a+=i;

? ? ? ? ++i;

? ? }

? ? printf("%d",a);

}

do-while語句

main()

{

? ? int a=0,i;

? ? scanf("%d",&i);

? ? do

? ? {

? ? ? ? a+=i;

? ? ? ? ++i;

? ? }while(i<=10);

? ? printf("%d",a);

}

當輸入的i值小于等于10時,兩者輸出結果無區(qū)別。當輸入的i大于10時,while語句不執(zhí)行循環(huán)體,do-while語句執(zhí)行一次循環(huán)題。因為while語句先判斷后執(zhí)行,do-while語句先執(zhí)行后判斷。

(14)忽略自增(自減)運算符的細節(jié)

第一個區(qū)別, i++ 返回原來的值,++i 返回加1后的值

main()

{

? ? int a=0,b=0,i;

? ? scanf("%d",&i);

? ? a=++i;

? ? --i;//保證i值沒變化

? ? b=i++;

? ? print("a=%d,b=%d",a,b);

}

輸出結果: a=i+1 b=i 。因為a=++i;是先把i加1再賦值給a,可以把此句分解為:i=i+1;a=i;;b=i++; 是先把i賦值給b再加1,可分解為:b=i;i=i+1; 。

第二個區(qū)別,i++ 不能作為左值,而++i 可以

左值是對應內存中有確定存儲地址的對象的表達式的值,而右值是所有不是左值的表達式的值。

int i = 1;

int *p1 = &(++i); //正確

int *p2 = &(i++); //錯誤

++i = 6; //正確

i++ = 8; //錯誤

(15)忽略sizeof()和strlen()的區(qū)別

char str[20]="Incredibly";

int? a=strlen(str); /* a=10;strlen 計算字符串的長度,以\0'為字符串結束標記。 */

int? b=sizeof(str); /* b=20;sizeof 計算的則是分配的數(shù)組str[20] 所占的內存空間的大小,不受里面存儲的內容影響*/

(16)在定義數(shù)組時,將定義的“元素個數(shù)”誤認為是可使用的最大下標

main()

{

? ? int a[5]={0,1,2,3,4};

? ? printf("%d",a[5]);

}

C語言中,定義時用a[5],表示a數(shù)組中有5個元素。其下標是從0開始的,數(shù)組中最后一個元素是a[4],不存在a[5]。

(17)定義數(shù)組時誤用變量

int i;

scanf("%d",#i);

int a[i];//錯

數(shù)組名后用方括號括起來的是常量表達式,可以包括常量和符號常量。即C不允許對數(shù)組大小作動態(tài)定義。

(18)地址運算符&使用錯誤

char str[8];

scanf("%s",&str);//錯

C中,數(shù)組名代表地址。正確的應為:

char str[8];

scanf("%s",str);

(19)同時定義了形參和函數(shù)中的局部變量

int x,y,z;

int max(x,y)

{

? ? z=x>y?x:y;

? ? return z;

}

形參應在函數(shù)體外定義,而局部變量應在函數(shù)體內定義。正確的應為:

int x,y;

int max(x,y)

{

? ? int z;

? ? z=x>y?x:y;

? ? return z;

}

大家還有哪些常見的易錯點呢,歡迎留言。另外,你如果感覺自學C/C++語言有困難的話,我本身是一個C/C++出身的程序員,我整理了一些學習C語言的視頻在扣裙,大家有興趣可以一起來學習,893,154,,226。

總結

以上是生活随笔為你收集整理的进来,让BUG远离你!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。