欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      C語言常見錯誤集合大全-完整版-程序員必備手冊5篇

      時間:2019-05-12 18:56:05下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《C語言常見錯誤集合大全-完整版-程序員必備手冊》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《C語言常見錯誤集合大全-完整版-程序員必備手冊》。

      第一篇:C語言常見錯誤集合大全-完整版-程序員必備手冊

      C語言的最大特點是:功能強、使用方便靈活。C編譯的程序對語法檢查并不象其它高級語言那么嚴格,這就給編程人員留下“靈活的余地”,但還是由于這個靈活給程序的調試帶來了許多不便,尤其對初學C語言的人來說,經(jīng)常會出一些連自己都不知道錯在哪里的錯誤??粗绣e的程序,不知該如何改起,本人通過對C的學習,積累了一些C編程時常犯的錯誤,寫給各位學員以供參考。

      1.書寫標識符時,忽略了大小寫字母的區(qū)別。main(){ int a=5;printf(“%d”,A);} 編譯程序把a和A認為是兩個不同的變量名,而顯示出錯信息。C認為大寫字母和小寫字母是兩個不同的字符。習慣上,符號常量名用大寫,變量名用小寫表示,以增加可讀性。2.忽略了變量的類型,進行了不合法的運算。main(){ float a,b;printf(“%d”,a%b);} %是求余運算,得到a/b的整余數(shù)。整型變量a和b可以進行求余運算,而實型變量則不允許進行“求余”運算。

      3.將字符常量與字符串常量混淆。char c;c=“a”;在這里就混淆了字符常量與字符串常量,字符常量是由一對單引號括起來的單個字符,字符串常量是一對雙引號括起來的字符序列。C規(guī)定以“”作字符串結束標志,它是由系統(tǒng)自動加上的,所以字符串“a”實際上包含兩個字符:‘a(chǎn)'和‘',而把它賦給一個字符變量是不行的。

      4.忽略了“=”與“==”的區(qū)別。

      在許多高級語言中,用“=”符號作為關系運算符“等于”。如在BASIC程序中可以寫 if(a=3)then ? 但C語言中,“=”是賦值運算符,“==”是關系運算符。如: if(a==3)a=b;前者是進行比較,a是否和3相等,后者表示如果a和3相等,把b值賦給a。由于習慣問題,初學者往往會犯這樣的錯誤。5.忘記加分號。

      分號是C語句中不可缺少的一部分,語句末尾必須有分號。a=1 b=2 編譯時,編譯程序在“a=1”后面沒發(fā)現(xiàn)分號,就把下一行“b=2”也作為上一行語句的一部分,這就會出現(xiàn)語法錯誤。改錯時,有時在被指出有錯的一行中未發(fā)現(xiàn)錯誤,就需要看一下上一行是否漏掉了分號。{ z=x+y;t=z/100;printf(“%f”,t);} QQ291911320 對于復合語句來說,最后一個語句中最后的分號不能忽略不寫(這是和PASCAL不同的)。6.多加分號。

      對于一個復合語句,如: { z=x+y;t=z/100;printf(“%f”,t);};復合語句的花括號后不應再加分號,否則將會畫蛇添足。又如:

      if(a%3==0);I++;本是如果3整除a,則I加1。但由于if(a%3==0)后多加了分號,則if語句到此結束,程序將執(zhí)行I++語句,不論3是否整除a,I都將自動加1。再如:

      for(I=0;I<5;I++);{scanf(“%d”,&x);printf(“%d”,x);} 本意是先后輸入5個數(shù),每輸入一個數(shù)后再將它輸出。由于for()后多加了一個分號,使循環(huán)體變?yōu)榭照Z句,此時只能輸入一個數(shù)并輸出它。7.輸入變量時忘記加地址運算符“&”。int a,b;scanf(“%d%d”,a,b);這是不合法的。Scanf函數(shù)的作用是:按照a、b在內存的地址將a、b的值存進去?!?a”指a在內存中的地址。

      8.輸入數(shù)據(jù)的方式與要求不符。①scanf(“%d%d”,&a,&b);輸入時,不能用逗號作兩個數(shù)據(jù)間的分隔符,如下面輸入不合法: 3,4

      第二篇:C語言常見錯誤集合-完整版-程序員必備手冊

      C語言常見錯誤集合大全-完整版-程序員必備手冊.txt43風帆,不掛在桅桿上,是一塊無用的布;桅桿,不掛上風帆,是一根平常的柱;理想,不付諸行動是虛無縹緲的霧;行動,而沒有理想,是徒走沒有盡頭的路。44成功的門往往虛掩著,只要你勇敢去推,它就會豁然洞開。C語言的最大特點是:功能強、使用方便靈活。C編譯的程序對語法檢查并不象其它高級語言那么嚴格,這就給編程人員留下“靈活的余地”,但還是由于這個靈活給程序的調試帶來了許多不便,尤其對初學C語言的人來說,經(jīng)常會出一些連自己都不知道錯在哪里的錯誤??粗绣e的程序,不知該如何改起,本人通過對C的學習,積累了一些C編程時常犯的錯誤,寫給各位學員以供參考。

      1.書寫標識符時,忽略了大小寫字母的區(qū)別。main(){ int a=5;printf(“%d”,A);} 編譯程序把a和A認為是兩個不同的變量名,而顯示出錯信息。C認為大寫字母和小寫字母是兩個不同的字符。習慣上,符號常量名用大寫,變量名用小寫表示,以增加可讀性。2.忽略了變量的類型,進行了不合法的運算。main(){ float a,b;printf(“%d”,a%b);} %是求余運算,得到a/b的整余數(shù)。整型變量a和b可以進行求余運算,而實型變量則不允許進行“求余”運算。

      3.將字符常量與字符串常量混淆。char c;c=“a”;在這里就混淆了字符常量與字符串常量,字符常量是由一對單引號括起來的單個字符,字符串常量是一對雙引號括起來的字符序列。C規(guī)定以“”作字符串結束標志,它是由系統(tǒng)自動加上的,所以字符串“a”實際上包含兩個字符:‘a(chǎn)'和‘',而把它賦給一個字符變量是不行的。

      4.忽略了“=”與“==”的區(qū)別。

      在許多高級語言中,用“=”符號作為關系運算符“等于”。如在BASIC程序中可以寫 if(a=3)then ? 但C語言中,“=”是賦值運算符,“==”是關系運算符。如: if(a==3)a=b;前者是進行比較,a是否和3相等,后者表示如果a和3相等,把b值賦給a。由于習慣問題,初學者往往會犯這樣的錯誤。5.忘記加分號。

      分號是C語句中不可缺少的一部分,語句末尾必須有分號。a=1 b=2 編譯時,編譯程序在“a=1”后面沒發(fā)現(xiàn)分號,就把下一行“b=2”也作為上一行語句的一部分,這就會出現(xiàn)語法錯誤。改錯時,有時在被指出有錯的一行中未發(fā)現(xiàn)錯誤,就需要看一下上一行是否漏掉了分號。{ z=x+y;t=z/100;printf(“%f”,t);} QQ291911320 對于復合語句來說,最后一個語句中最后的分號不能忽略不寫(這是和PASCAL不同的)。6.多加分號。

      對于一個復合語句,如: { z=x+y;t=z/100;printf(“%f”,t);};復合語句的花括號后不應再加分號,否則將會畫蛇添足。又如:

      if(a%3==0);I++;本是如果3整除a,則I加1。但由于if(a%3==0)后多加了分號,則if語句到此結束,程序將執(zhí)行I++語句,不論3是否整除a,I都將自動加1。再如:

      for(I=0;I<5;I++);{scanf(“%d”,&x);printf(“%d”,x);} 本意是先后輸入5個數(shù),每輸入一個數(shù)后再將它輸出。由于for()后多加了一個分號,使循環(huán)體變?yōu)榭照Z句,此時只能輸入一個數(shù)并輸出它。7.輸入變量時忘記加地址運算符“&”。int a,b;scanf(“%d%d”,a,b);這是不合法的。Scanf函數(shù)的作用是:按照a、b在內存的地址將a、b的值存進去。“&a”指a在內存中的地址。

      8.輸入數(shù)據(jù)的方式與要求不符。①scanf(“%d%d”,&a,&b);輸入時,不能用逗號作兩個數(shù)據(jù)間的分隔符,如下面輸入不合法: 3,4

      第三篇:c語言常見錯誤

      1.= 不等于 ==

      從 Algol 派生出來的語言,如 Pascal 和 Ada,用 := 表示賦值而用 = 表示比較。而 C 語言則是用 = 表示賦值而用 == 表示比較。這是因為賦值的頻率要高于比較,因此為其分配更短的符號。此外,C 可以多重賦值(如 a = b = c),并且可以將賦值嵌入到一個大的表達式或者語句中。這種便捷導致了一個潛在的問題:需要用比較的地方卻寫成了賦值。下面的語句看起來好像是要檢查 x 是否等于 y :

      if(x = y)

      foo();

      而實際上是將 y 的值賦值給 x,并檢查結果是否非零。再看看下面的一個希望跳過空格、制表符和換行符的循環(huán):

      while(c == ’ ’ || c = ’t’ || c == ’n’)

      c = getc(f);

      在應該與 ’t’ 進行比較的地方程序員錯誤地使用了 =,而不是==。這個“比較”實際上是將’t’ 賦給 c,然后判斷 c 的(新的)值是否為零。因為 ’t’ 不為零,所以這個“比較”一直為真,因此這是一個死循環(huán)。

      一些編譯器會對形如 e1 = e2 的條件給出一個警告以提醒用戶。當你確實需要對一個變量進行賦值,然后再檢查變量是否“非零”時,為了避免這種警告信息,應顯式給出比較符。也就是將:

      if(x = y)

      foo();改寫為:

      if((x = y)!= 0)

      foo();

      2.多字符符號

      一些 C 符號,如 /、* 或 =,只有一個字符。還有些 C 符號,如 /*、== 或標識符,具有多個字符。當編譯器遇到緊連在一起的 / 和 * 時,它必須決定是將這兩個字符識別為兩個符號還是一個單獨的符號。C 語言標準規(guī)定:“如果一個字符被識別為符號,則應該包含下一個字符看看包含此字符后構成的字符串是否仍然可以構成符號,如果可以則繼續(xù)包含下一個字符,一直到不能構成符號為止?!?。因此,如果 / 是符號的第一個字符,并且 / 后面緊隨著一個 *,則這兩個字符構成注釋符開始標記。下面的語句看起來像是將 y 的值設置為 x 的值除以 p 所指向的值:

      y = x/*p

      /* p 指向除數(shù) */;

      實際上,因為 /* 是注釋符開始標記,因此編譯器會簡單地“吞噬”程序文本,直到 */ 出現(xiàn)為止。換句話說,這條語句僅僅把 y 的值設置為 x 的值,而根本沒有看到 p。我們應該將這條語句改為:

      y = x / *p

      /* p 指向除數(shù) */;或者:

      y = x /(*p)

      /* p指向除數(shù) */;

      3.else 問題

      考慮下面的程序片斷:

      if(x == 0)

      if(y == 0)

      error();

      else {

      z = x

      y;

      f(&z);

      }

      寫這段程序的程序員的目的明顯是想將情況分為兩種:x == 0 和x!= 0。在第一種情況中,如果 y == 0,則調用 error()。第二種情況中,程序執(zhí)行 z = x

      y;和 f(&z)。

      然而,這段程序的實際效果卻大為不同。其原因是 else 總是與離它最近的 if 相關聯(lián)。上面那段代碼其實等價于:

      if(x == 0){

      if(y == 0)

      error();

      else {

      z = x

      y;

      f(&z);

      }

      }

      也就是說,當 x!= 0 發(fā)生時什么也不做。如果要達到我們想要的效果,應該改成:

      if(x == 0){

      if(y == 0)

      error();

      } else {

      z = z

      y;

      f(&z);

      }

      4.表達式求值順序

      一些運算符以一種已知的、特定的順序對其操作數(shù)進行求值。但另一些則不是。例如下面的表達式:

      a

      5.&&、|| 和!運算符

      C 規(guī)定 0 代表“假”,非零代表“真”。這些運算符返回 1 表示“真”而返回 0 表示“假”。&& 和 || 運算符如果可以通過左邊的操作數(shù)確定整個表達式的真假性,就不會對右邊的操作數(shù)進行求值。!10 返回 0,因為 10 非零;10 && 12 返回 1,因為 10 和 12 的值都不是 0;10 || 12 也是 1,因為 10 非零。這個表達式中的 12 不會被求值,因為左邊的 10 就足夠確定整個表達式為真。同理 :10 || f()中的 f()也不會被求值。

      6.下標從零開始

      C 語言中,一個具有 n 個元素的數(shù)組中沒有下標為 n 的元素,元素的下標是從 0 到n-1。下面的程序可能會崩潰:

      int i, a[10];

      for(i = 1;i

      7.getchar 函數(shù)的返回值為整型(int)

      請看以下程序:

      #include

      int main(void)

      {

      char c;

      while((c = getchar())!= EOF)

      putchar(c);

      return 0;

      }

      這段代碼存在一個小小的,但已經(jīng)足以致命的錯誤:c 被聲明為字符型(char)而不是整型。這意味著 c 可能不能正確接收 EOF,從而導致程序不能退出!正確的寫法是:將 char 改成int。

      第四篇:C語言常見錯誤小結(定稿)

      c語言的最大特點是:功能強、使用方便靈活。C編譯的程序對語法檢查并不象其它高級語言那么嚴格,這就給編程人員留下“靈活的余地”,但還是由于這個靈活給程序的調試帶來了許多不便,尤其對初學C語言的人來說,經(jīng)常會出一些連自己都不知道錯在哪里的錯誤??粗绣e的程序,不知該如何改起,本人通過對C的學習,積累了一些C編程時常犯的錯誤,寫給各位學員以供參考。

      1.書寫標識符時,忽略了大小寫字母的區(qū)別。

      main(){

      int a=5;

      printf(“%d”,A);}

      編譯程序把a和A認為是兩個不同的變量名,而顯示出錯信息。C認為大寫字母和小寫字母是兩個不同的字符。習慣上,符號常量名用大寫,變量名用小寫表示,以增加可讀性。

      2.忽略了變量的類型,進行了不合法的運算。

      main(){

      float a,b;

      printf(“%d”,a%b);}

      %是求余運算,得到a/b的整余數(shù)。整型變量a和b可以進行求余運算,而實型變量則不答應進行“求余”運算。

      3.將字符常量與字符串常量混淆。

      char c;c=“a”;

      在這里就混淆了字符常量與字符串常量,字符常量是由一對單引號括起來的單個字符,字符串常量是一對雙引號括起來的字符序列。C規(guī)定以“”作字符串結束標志,它是由系統(tǒng)自動加上的,所以字符串“a”實際上包含兩個字符:‘a(chǎn)'和‘',而把它賦給一個字符變量是不行的。

      4.忽略了“=”與“= =”的區(qū)別。

      在許多高級語言中,用“=”符號作為關系運算符“等于”。如在BASIC程序中可以寫

      if(a=3)then ?

      但C語言中,“=”是賦值運算符,“==”是關系運算符。如:

      if(a==3)a=b;

      前者是進行比較,a是否和3相等,后者表示假如a和3相等,把b值賦給a。由于習慣問題,初學者往往會犯這樣的錯誤。

      5.忘記加分號。

      分號是C語句中不可缺少的一部分,語句末尾必須有分號。

      a=1 b=2

      編譯時,編譯程序在“a=1”后面沒發(fā)現(xiàn)分號,就把下一行“b=2”也作為上一行語句的一部分,這就會出現(xiàn)語法錯誤。改錯時,有時在被指出有錯的一行中未發(fā)現(xiàn)錯誤,就需要看一下上一行是否漏掉了分號。

      { z=x+y;t=z/100;printf(“%f”,t);}

      對于復合語句來說,最后一個語句中最后的分號不能忽略不寫(這是和PASCAL不同的)。

      6.多加分號。

      對于一個復合語句,如:

      { z=x+y;t=z/100;

      printf(“%f”,t);};

      復合語句的花括號后不應再加分號,否則將會畫蛇添足。

      又如:

      if(a%3==0);I++;

      本是假如3整除a,則I加1。但由于if(a%3==0)后多加了分號,則if語句到此結束,程序將執(zhí)行I++語句,不論3是否整除a,I都將自動加1。

      再如:

      for(I=0;I<5;I++);{scanf(“%d”,&x);printf(“%d”,x);}

      本意是先后輸入5個數(shù),每輸入一個數(shù)后再將它輸出。由于for()后多加了一個分號,使循環(huán)體變?yōu)榭照Z句,此時只能輸入一個數(shù)并輸出它。

      7.輸入變量時忘記加地址運算符“&”。

      int a,b;

      scanf(“%d%d”,a,b);

      這是不合法的。Scanf函數(shù)的作用是:按照a、b在內存的地址將a、b的值存進去?!?a”指a在內存中的地址。

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

      ①scanf(“%d%d”,&a,&b);

      輸入時,不能用逗號作兩個數(shù)據(jù)間的分隔符,如下面輸入不合法:

      3,4

      輸入數(shù)據(jù)時,在兩個數(shù)據(jù)之間以一個或多個空格間隔,也可用回車鍵,跳格鍵tab。

      ②scanf(“%d,%d”,&a,&b);

      C規(guī)定:假如在“格式控制”字符串中除了格式說明以外還有其它字符,則在輸入數(shù)據(jù)時應輸入與這些字符相同的字符。下面輸入是合法的:

      3,4

      此時不用逗號而用空格或其它字符是不對的。4 3:4

      又如:

      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,因為%c只要求讀入一個字符,后面不需要用空格作為兩個字符的間隔。

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

      例如,a已定義為整型,b定義為實型

      a=3;b=4.5;

      printf(“%f%dn”,a,b);

      編譯時不給出出錯信息,但運行結果將與原意不符。這種錯誤尤其需要注重。

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

      scanf(“%7.2f”,&a);

      這樣做是不合法的,輸入數(shù)據(jù)時不能規(guī)定精度。

      12.switch語句中漏寫break語句。

      例如:根據(jù)考試成績的等級打印出百分制數(shù)段。

      switch(grade)

      { case 'A':printf(“85~100n”);case 'B':printf(“70~84n”);case 'C':printf(“60~69n”);case 'D':printf(“<60n”);default:printf(“errorn”);

      由于漏寫了break語句,case只起標號的作用,而不起判定作用。因此,當grade值為A時,printf函數(shù)在執(zhí)行完第一個語句后接著執(zhí)行第二、三、四、五個printf函數(shù)語句。正確寫法應在每個分支后再加上“break;”。例如

      case 'A':printf(“85~100n”);break;

      13.忽視了while和do-while語句在細節(jié)上的區(qū)別。

      (1)main(){int a=0,I;

      scanf(“%d”,&I);while(I<=10){a=a+I;I++;}

      printf(“%d”,a);}

      (2)main(){int a=0,I;

      scanf(“%d”,&I);do

      {a=a+I;I++;

      }while(I<=10);printf(“%d”,a);}

      可以看到,當輸入I的值小于或等于10時,二者得到的結果相同。而當I>10時,二者結果就不同了。因為while循環(huán)是先判定后執(zhí)行,而do-while循環(huán)是先執(zhí)行后判定。對于大于10的數(shù)while循環(huán)一次也不執(zhí)行循環(huán)體,而do-while語句則要執(zhí)行一次循環(huán)體。

      14.定義數(shù)組時誤用變量。

      int n;

      scanf(“%d”,&n);int a[n];

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

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

      m ain()

      {static int a[10]={1,2,3,4,5,6,7,8,9,10};printf(“%d”,a[10]);}

      C語言規(guī)定:定義時用a[10],表示a數(shù)組有10個元素。其下標值由0開始,所以數(shù)組元素a[10]是不存在的。

      16.初始化數(shù)組時,未使用靜態(tài)存儲。

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

      這樣初始化數(shù)組是不對的。C語言規(guī)定只有靜態(tài)存儲(static)數(shù)組和外部存儲(exterm)數(shù)組才能初始化。應改為:

      static int a[3]={0,1,2};

      17.在不應加地址運算符&的位置加了地址運算符。

      scanf(“%s”,&str);

      C語言編譯系統(tǒng)對數(shù)組名的處理是:數(shù)組名代表該數(shù)組的起始地址,且scanf函數(shù)中的輸入項是字符數(shù)組名,不必要再加地址符&。應改為:

      scanf(“%s”,str);

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

      int max(x,y)int x,y,z;{z=x>y?x:y;return(z);}

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

      int max(x,y)int x,y;{int z;

      z=x>y?x:y;return(z);}

      附錄:出錯信息解釋

      Ambiguous operators need parentheses 不明確的運算需要用括號括起

      Ambiguous symbol 'xxx' 不明確的符號

      Argument list syntax error 參數(shù)表語法錯誤

      Array bounds missing 丟失數(shù)組界限符

      Array size toolarge 數(shù)組尺寸太大

      Bad character in paramenters 參數(shù)中有不適當?shù)淖址?/p>

      Bad file name format in include directive 包含命令中文件名格式不正確

      Bad ifdef directive synatax 編譯預處理ifdef有語法錯

      Bad undef directive syntax 編譯預處理undef有語法錯

      Bit field too large 位字段太長

      Call of non-function 調用未定義的函數(shù)

      Call to function with no prototype 調用函數(shù)時沒有函數(shù)的說明

      Cannot modify a const object 不允許修改常量對象

      Case outside of switch 漏掉了case 語句

      Case syntax error Case 語法錯誤

      Code has no effect

      代碼不可述不可能執(zhí)行到

      Compound statement missing{ 分程序漏掉“{”

      Conflicting type modifiers 不明確的類型說明符

      Constant expression required 要求常量表達式

      Constant out of range in comparison 在比較中常量超出范圍

      Conversion may lose significant digits 轉換時會丟失意義的數(shù)字

      Conversion of near pointer not allowed 不允許轉換近指針

      Could not find file 'xxx' 找不到XXX文件

      Declaration missing;說明缺少“;”

      Declaration syntax error 說明中出現(xiàn)語法錯誤

      Default outside of switch

      Default 出現(xiàn)在switch語句之外

      Define directive needs an identifier 定義編譯預處理需要標識符

      Division by zero 用零作除數(shù)

      Do statement must have while Do-while語句中缺少while部分

      Enum syntax error 枚舉類型語法錯誤

      Enumeration constant syntax error 枚舉常數(shù)語法錯誤

      Error directive :xxx

      錯誤的編譯預處理命令

      Error writing output file 寫輸出文件錯誤

      Expression syntax error 表達式語法錯誤

      Extra parameter in call 調用時出現(xiàn)多余錯誤

      File name too long 文件名太長

      Function call missing)函數(shù)調用缺少右括號

      Fuction definition out of place 函數(shù)定義位置錯誤

      Fuction should return a value 函數(shù)必需返回一個值

      Goto statement missing label Goto語句沒有標號

      Hexadecimal or octal constant too large 16進制或8進制常數(shù)太大

      Illegal character 'x' 非法字符x

      Illegal initialization 非法的初始化

      Illegal octal digit 非法的8進制數(shù)字

      Illegal pointer subtraction 非法的指針相減

      Illegal structure operation 非法的結構體操作

      Illegal use of floating point 非法的浮點運算

      Illegal use of pointer 指針使用非法

      Improper use of a typedefsymbol 類型定義符號使用不恰當

      In-line assembly not allowed 不允許使用行間匯編

      Incompatible storage class 存儲類別不相容

      Incompatible type conversion 不相容的類型轉換

      Incorrect number format 錯誤的數(shù)據(jù)格式

      Incorrect use of default Default使用不當

      Invalid indirection 無效的間接運算

      Invalid pointer addition 指針相加無效

      Irreducible expression tree 無法執(zhí)行的表達式運算

      Lvalue required

      需要邏輯值0或非0值

      Macro argument syntax error 宏參數(shù)語法錯誤

      Macro expansion too long 宏的擴展以后太長

      Mismatched number of parameters in definition 定義中參數(shù)個數(shù)不匹配

      Misplaced break

      此處不應出現(xiàn)break語句

      Misplaced continue

      此處不應出現(xiàn)continue語句

      Misplaced decimal point 此處不應出現(xiàn)小數(shù)點

      Misplaced elif directive 不應編譯預處理elif Misplaced else 此處不應出現(xiàn)else Misplaced else directive

      此處不應出現(xiàn)編譯預處理else Misplaced endif directive

      此處不應出現(xiàn)編譯預處理endif Must be addressable 必須是可以編址的

      Must take address of memory location 必須存儲定位的地址

      No declaration for function 'xxx' 沒有函數(shù)xxx的說明

      No stack 缺少堆棧

      No type information 沒有類型信息

      Non-portable pointer assignment 不可移動的指針(地址常數(shù))賦值

      Non-portable pointer comparison 不可移動的指針(地址常數(shù))比較

      Non-portable pointer conversion 不可移動的指針(地址常數(shù))轉換

      Not a valid expression format type 不合法的表達式格式

      Not an allowed type 不允許使用的類型

      Numeric constant too large 數(shù)值常太大

      Out of memory 內存不夠用

      Parameter 'xxx' is never used 能數(shù)xxx沒有用到

      Pointer required on left side of-> 符號->的左邊必須是指針

      Possible use of 'xxx' before definition 在定義之前就使用了xxx(警告)

      Possibly incorrect assignment 賦值可能不正確

      Redeclaration of 'xxx' 重復定義了xxx

      Redefinition of 'xxx' is not identical xxx的兩次定義不一致

      Register allocation failure 寄存器定址失敗

      Repeat count needs an lvalue 重復計數(shù)需要邏輯值

      Size of structure or array not known 結構體或數(shù)給大小不確定

      Statement missing;語句后缺少“;”

      Structure or union syntax error 結構體或聯(lián)合體語法錯誤

      Structure size too large 結構體尺寸太大

      Sub scripting missing ] 下標缺少右方括號

      Superfluous & with function or array 函數(shù)或數(shù)組中有多余的“&” Suspicious pointer conversion 可疑的指針轉換

      Symbol limit exceeded 符號超限

      Too few parameters in call

      函數(shù)調用時的實參少于函數(shù)的參數(shù)不

      Too many default cases

      Default太多(switch語句中一個)Too many error or warning messages 錯誤或警告信息太多

      Too many type in declaration 說明中類型太多

      Too much auto memory in function 函數(shù)用到的局部存儲太多

      Too much global data defined in file 文件中全局數(shù)據(jù)太多

      Two consecutive dots 兩個連續(xù)的句點

      Type mismatch in parameter xxx 參數(shù)xxx類型不匹配

      Type mismatch in redeclaration of 'xxx' xxx重定義的類型不匹配

      Unable to create output file 'xxx' 無法建立輸出文件xxx

      Unable to open include file 'xxx' 無法打開被包含的文件xxx Unable to open input file 'xxx' 無法打開輸入文件xxx Undefined label 'xxx' 沒有定義的標號xxx Undefined structure 'xxx' 沒有定義的結構xxx Undefined symbol 'xxx' 沒有定義的符號xxx

      Unexpected end of file in comment started on line xxx 從xxx行開始的注解尚未結束文件不能結束

      Unexpected end of file in conditional started on line xxx 從xxx 開始的條件語句尚未結束文件不能結束

      Unknown assemble instruction 未知的匯編結構

      Unknown option 未知的操作

      Unknown preprocessor directive: 'xxx' 不認識的預處理命令xxx Unreachable code 無路可達的代碼

      Unterminated string or character constant 字符串缺少引號

      User break

      用戶強行中斷了程序

      Void functions may not return a value Void類型的函數(shù)不應有返回值

      Wrong number of arguments 調用函數(shù)的參數(shù)數(shù)目錯

      'xxx' not an argument xxx不是參數(shù)

      'xxx' not part of structure xxx不是結構體的一部分

      xxx statement missing(xxx語句缺少左括號

      xxx statement missing)xxx語句缺少右括號

      xxx statement missing;xxx缺少分號

      xxx' declared but never used 說明了xxx但沒有使用

      xxx' is assigned a value which is never used 給xxx賦了值但未用過

      Zero length structure 結構體的長度為零

      第五篇:黑馬程序員C語言教程:C++語言78個常見編譯錯誤及分析

      C語言常見編譯錯誤及分析大全 fatal error C1003: error count exceeds number;stopping compilation

      中文對照:(編譯錯誤)錯誤太多,停止編譯 分析:修改之前的錯誤,再次編譯 fatal error C1004: unexpected end of file found

      中文對照:(編譯錯誤)文件未結束

      分析:一個函數(shù)或者一個結構定義缺少“}”、或者在一個函數(shù)調用或表達式中括號沒有配對出現(xiàn)、或者注釋符“/*?*/”不完整等 fatal error C1083: Cannot open include file: 'xxx': No such file or directory

      中文對照:(編譯錯誤)無法打開頭文件xxx:沒有這個文件或路徑 分析:頭文件不存在、或者頭文件拼寫錯誤、或者文件為只讀 fatal error C1903: unable to recover from previous error(s);stopping compilation

      中文對照:(編譯錯誤)無法從之前的錯誤中恢復,停止編譯 分析:引起錯誤的原因很多,建議先修改之前的錯誤 error C2001: newline in constant

      中文對照:(編譯錯誤)常量中創(chuàng)建新行 分析:字符串常量多行書寫 error C2006: #include expected a filename, found 'identifier'

      中文對照:(編譯錯誤)#include命令中需要文件名

      分析:一般是頭文件未用一對雙引號或尖括號括起來,例如“#include stdio.h” error C2007: #define syntax

      中文對照:(編譯錯誤)#define語法錯誤

      分析:例如“#define”后缺少宏名,例如“#define” error C2008: 'xxx' : unexpected in macro definition

      中文對照:(編譯錯誤)宏定義時出現(xiàn)了意外的xxx

      分析:宏定義時宏名與替換串之間應有空格,例如“#define TRUE“1”” error C2009: reuse of macro formal 'identifier'

      中文對照:(編譯錯誤)帶參宏的形式參數(shù)重復使用

      分析:宏定義如有參數(shù)不能重名,例如“#define s(a,a)(a*a)”中參數(shù)a重復 error C2010: 'character' : unexpected in macro formal parameter list

      中文對照:(編譯錯誤)帶參宏的形式參數(shù)表中出現(xiàn)未知字符 分析:例如“#define s(r|)r*r”中參數(shù)多了一個字符‘|’ error C2014: preprocessor command must start as first nonwhite space

      中文對照:(編譯錯誤)預處理命令前面只允許空格

      分析:每一條預處理命令都應獨占一行,不應出現(xiàn)其他非空格字符 error C2015: too many characters in constant 中文對照:(編譯錯誤)常量中包含多個字符 分析:字符型常量的單引號中只能有一個字符,或是以“”開始的一個轉義字符,例如“char error = 'error';” error C2017: illegal escape sequence 中文對照:(編譯錯誤)轉義字符非法

      分析:一般是轉義字符位于 ' ' 或 “ ” 之外,例如“char error = ' 'n;” error C2018: unknown character '0xhh' 中文對照:(編譯錯誤)未知的字符0xhh 分析:一般是輸入了中文標點符號,例如“char error = 'E';”中“;”為中文標點符號 error C2019: expected preprocessor directive, found 'character' 中文對照:(編譯錯誤)期待預處理命令,但有無效字符

      分析:一般是預處理命令的#號后誤輸入其他無效字符,例如“#!define TRUE 1” error C2021: expected exponent value, not 'character' 中文對照:(編譯錯誤)期待指數(shù)值,不能是字符

      分析:一般是浮點數(shù)的指數(shù)表示形式有誤,例如123.456E error C2039: 'identifier1' : is not a member of 'identifier2' 中文對照:(編譯錯誤)標識符1不是標識符2的成員 分析:程序錯誤地調用或引用結構體、共用體、類的成員 error C2041: illegal digit 'x' for base 'n' 中文對照:(編譯錯誤)對于n進制來說數(shù)字x非法

      分析:一般是八進制或十六進制數(shù)表示錯誤,例如“int i = 081;”語句中數(shù)字‘8’不是八進制的基數(shù) error C2048: more than one default 中文對照:(編譯錯誤)default語句多于一個

      分析:switch語句中只能有一個default,刪去多余的default

      error C2050: switch expression not integral 中文對照:(編譯錯誤)switch表達式不是整型的

      分析:switch表達式必須是整型(或字符型),例如“switch(“a”)”中表達式為字符串,這是非法的 error C2051: case expression not constant 中文對照:(編譯錯誤)case表達式不是常量

      分析:case表達式應為常量表達式,例如“case “a””中““a””為字符串,這是非法的 error C2052: 'type' : illegal type for case expression 中文對照:(編譯錯誤)case表達式類型非法

      分析:case表達式必須是一個整型常量(包括字符型)error C2057: expected constant expression 中文對照:(編譯錯誤)期待常量表達式

      分析:一般是定義數(shù)組時數(shù)組長度為變量,例如“int n=10;int a[n];”中n為變量,這是非法的 error C2058: constant expression is not integral 中文對照:(編譯錯誤)常量表達式不是整數(shù) 分析:一般是定義數(shù)組時數(shù)組長度不是整型常量 error C2059: syntax error : 'xxx' 中文對照:(編譯錯誤)‘xxx’語法錯誤

      分析:引起錯誤的原因很多,可能多加或少加了符號xxx error C2064: term does not evaluate to a function 中文對照:(編譯錯誤)無法識別函數(shù)語言

      分析:

      1、函數(shù)參數(shù)有誤,表達式可能不正確,例如“sqrt(s(s-a)(s-b)(s-c));”中表達式不正確

      2、變量與函數(shù)重名或該標識符不是函數(shù),例如“int i,j;j=i();”中i不是函數(shù) error C2065: 'xxx' : undeclared identifier 中文對照:(編譯錯誤)未定義的標識符xxx 分析:

      1、如果xxx為cout、cin、scanf、printf、sqrt等,則程序中包含頭文件有誤

      2、未定義變量、數(shù)組、函數(shù)原型等,注意拼寫錯誤或區(qū)分大小寫。error C2078: too many initializers 中文對照:(編譯錯誤)初始值過多

      分析:一般是數(shù)組初始化時初始值的個數(shù)大于數(shù)組長度,例如“int b[2]={1,2,3};” error C2082: redefinition of formal parameter 'xxx' 中文對照:(編譯錯誤)重復定義形式參數(shù)xxx 分析:函數(shù)首部中的形式參數(shù)不能在函數(shù)體中再次被定義 error C2084: function 'xxx' already has a body 中文對照:(編譯錯誤)已定義函數(shù)xxx 分析:在VC++早期版本中函數(shù)不能重名,6.0版本中支持函數(shù)的重載,函數(shù)名可以相同但參數(shù)不一樣

      error C2086: 'xxx' : redefinition 中文對照:(編譯錯誤)標識符xxx重定義 分析:變量名、數(shù)組名重名

      error C2087: '' : missing subscript 中文對照:(編譯錯誤)下標未知

      分析:一般是定義二維數(shù)組時未指定第二維的長度,例如“int a[3][];”

      error C2100: illegal indirection

      中文對照:(編譯錯誤)非法的間接訪問運算符“*” 分析:對非指針變量使用“*”運算

      error C2105: 'operator' needs l-value 中文對照:(編譯錯誤)操作符需要左值

      分析:例如“(a+b)++;”語句,“++”運算符無效

      error C2106: 'operator': left operand must be l-value 中文對照:(編譯錯誤)操作符的左操作數(shù)必須是左值 分析:

      例如“a+b=1;”語句,“=”運算符左值必須為變量,不能是表達式

      error C2110: cannot add two pointers 中文對照:(編譯錯誤)兩個指針量不能相加

      分析:例如“int *pa,*pb,*a;a = pa + pb;”中兩個指針變量不能進行“+”運算

      error C2117: 'xxx' : array bounds overflow 中文對照:(編譯錯誤)數(shù)組xxx邊界溢出

      分析:一般是字符數(shù)組初始化時字符串長度大于字符數(shù)組長度,例如“char str[4] = “abcd”;”

      error C2118: negative subscript or subscript is too large 中文對照:(編譯錯誤)下標為負或下標太大

      分析:一般是定義數(shù)組或引用數(shù)組元素時下標不正確 error C2124: divide or mod by zero 中文對照:(編譯錯誤)被零除或對0求余 分析:例如“int i = 1 / 0;”除數(shù)為0

      error C2133: 'xxx' : unknown size 中文對照:(編譯錯誤)數(shù)組xxx長度未知

      分析:一般是定義數(shù)組時未初始化也未指定數(shù)組長度,例如“int a[];”

      error C2137: empty character constant。中文對照:(編譯錯誤)字符型常量為空 分析:一對單引號“''”中不能沒有任何字符

      error C2143: syntax error : missing 'token1' before 'token2'

      error C2146: syntax 4error : missing 'token1' before identifier 'identifier' 中文對照:(編譯錯誤)在標識符或語言符號2前漏寫語言符號1 分析:可能缺少“{”、“)”或“;”等語言符號

      error C2144: syntax error : missing ')' before type 'xxx' 中文對照:(編譯錯誤)在xxx類型前缺少‘)’ 分析:一般是函數(shù)調用時定義了實參的類型

      error C2181: illegal else without matching if 中文對照:(編譯錯誤)非法的沒有與if相匹配的else 分析:可能多加了“;”或復合語句沒有使用“{}”

      error C2196: case value '0' already used 中文對照:(編譯錯誤)case值0已使用 分析:case后常量表達式的值不能重復出現(xiàn)

      error C2296: '%' : illegal, left operand has type 'float' 47 error C2297: '%' : illegal, right operand has type 'float' 中文對照:(編譯錯誤)%運算的左(右)操作數(shù)類型為float,這是非法的

      分析:求余運算的對象必須均為int類型,應正確定義變量類型或使用強制類型轉換

      error C2371: 'xxx' : redefinition;different basic types 中文對照:(編譯錯誤)標識符xxx重定義;基類型不同 分析:定義變量、數(shù)組等時重名

      error C2440: '=' : cannot convert from 'char [2]' to 'char' 中文對照:(編譯錯誤)賦值運算,無法從字符數(shù)組轉換為字符

      分析:不能用字符串或字符數(shù)組對字符型數(shù)據(jù)賦值,更一般的情況,類型無法轉換

      error C2447: missing function header(old-style formal list?)51 error C2448: '' : function-style initializer appears to be a function definition 中文對照:(編譯錯誤)缺少函數(shù)標題(是否是老式的形式表?)分析:函數(shù)定義不正確,函數(shù)首部的“()”后多了分號或者采用了老式的C語言的形參表

      error C2450: switch expression of type 'xxx' is illegal 中文對照:(編譯錯誤)switch表達式為非法的xxx類型

      分析:switch表達式類型應為int或char

      error C2466: cannot allocate an array of constant size 0 中文對照:(編譯錯誤)不能分配長度為0的數(shù)組 分析:一般是定義數(shù)組時數(shù)組長度為0

      error C2601: 'xxx' : local function definitions are illegal 中文對照:(編譯錯誤)函數(shù)xxx定義非法

      分析:一般是在一個函數(shù)的函數(shù)體中定義另一個函數(shù)

      error C2632: 'type1' followed by 'type2' is illegal 中文對照:(編譯錯誤)類型1后緊接著類型2,這是非法的 分析:例如“int float i;”語句

      error C2660: 'xxx' : function does not take n parameters 中文對照:(編譯錯誤)函數(shù)xxx不能帶n個參數(shù) 分析:調用函數(shù)時實參個數(shù)不對,例如“sin(x,y);”

      error C2664: 'xxx' : cannot convert parameter n from 'type1' to 'type2' 中文對照:(編譯錯誤)函數(shù)xxx不能將第n個參數(shù)從類型1轉換為類型2 分析:一般是函數(shù)調用時實參與形參類型不一致

      error C2676: binary '<<' : 'class istream_withassign' does not define this operator or a conversion to a type acceptable to the predefined operator error C2676: binary '>>' : 'class ostream_withassign' does not define this operator or a conversion to a type acceptable to the predefined operator 分析:“>>”、“<<”運算符使用錯誤,例如“cin<>y;”

      error C4716: 'xxx' : must return a value 中文對照:(編譯錯誤)函數(shù)xxx必須返回一個值

      分析:僅當函數(shù)類型為void時,才能使用沒有返回值的返回命令。

      fatal error LNK1104: cannot open file “Debug/Cpp1.exe” 中文對照:(鏈接錯誤)無法打開文件Debug/Cpp1.exe 分析:重新編譯鏈接

      fatal error LNK1168: cannot open Debug/Cpp1.exe for writing 中文對照:(鏈接錯誤)不能打開Debug/Cpp1.exe文件,以改寫內容。分析:一般是Cpp1.exe還在運行,未關閉

      fatal error LNK1169: one or more multiply defined symbols found 中文對照:(鏈接錯誤)出現(xiàn)一個或更多的多重定義符號。分析:一般與error LNK2005一同出現(xiàn)

      error LNK2001: unresolved external symbol _main 中文對照:(鏈接錯誤)未處理的外部標識main 分析:一般是main拼寫錯誤,例如“void mian()”

      error LNK2005: _main already defined in Cpp1.obj 中文對照:(鏈接錯誤)main函數(shù)已經(jīng)在Cpp1.obj文件中定義 分析:未關閉上一程序的工作空間,導致出現(xiàn)多個main函數(shù)

      warning C4003: not enough actual parameters for macro 'xxx' 中文對照:(編譯警告)宏xxx沒有足夠的實參 分析:一般是帶參宏展開時未傳入?yún)?shù)

      warning C4067: unexpected tokens following preprocessor directive期待新行 分析:“#include;”命令后的“;”為多余的字符

      warning C4091: '' : ignored on left of 'type' when no variable is declared 中文對照:(編譯警告)當沒有聲明變量時忽略類型說明 分析:語句“int;”未定義任何變量,不影響程序執(zhí)行

      warning C4101: 'xxx' : unreferenced local variable 中文對照:(編譯警告)變量xxx定義了但未使用 分析:可去掉該變量的定義,不影響程序執(zhí)行

      warning C4244: '=' : conversion from 'type1' to 'type2', possible loss of data 中文對照:(編譯警告)賦值運算,從數(shù)據(jù)類型1轉換為數(shù)據(jù)類型2,可能丟失數(shù)據(jù)

      分析:需正確定義變量類型,數(shù)據(jù)類型1為float或double、數(shù)據(jù)類型2為int時,結果有可能不正確,數(shù)據(jù)類型1為double、數(shù)據(jù)類型2為float時,不影響程序結果,可忽略該警告

      warning C4305: 'initializing' : truncation from 'const double' to 'float' 中文對照:(編譯警告)初始化,截取雙精度常量為float類型 分析:出現(xiàn)在對float類型變量賦值時,一般不影響最終結果

      warning C4390: ';' : empty controlled statement found;is this the intent? 中文對照:(編譯警告)‘;’控制語句為空語句,是程序的意圖嗎?

      分析:if語句的分支或循環(huán)控制語句的循環(huán)體為空語句,一般是多加了“;”

      warning C4508: 'xxx' : function should return a value;'void' return type assumed 中文對照:(編譯警告)函數(shù)xxx應有返回值,假定返回類型為void 分析:一般是未定義main函數(shù)的類型為void,不影響程序執(zhí)行 c語言的錯誤對照表———— 在遇到錯誤時可以對照查看

      warning C4552: 'operator' : operator has no effect;expected operator with side-effect 中文對照:(編譯警告)運算符無效果;期待副作用的操作符 分析:例如“i+j;”語句,“+”運算無意義

      warning C4553: '==' : operator has no effect;did you intend '='? 中文對照:(編譯警告)“==”運算符無效;是否為“=”? 分析:例如 “i==j;” 語句,“==”運算無意義

      warning C4700: local variable 'xxx' used without having been initialized 中文對照:(編譯警告)變量xxx在使用前未初始化

      分析:變量未賦值,結果有可能不正確,如果變量通過scanf函數(shù)賦值,則有可能漏寫“&”運算符,或變量通過cin賦值,語句有誤

      warning C4715: 'xxx' : not all control paths return a value 中文對照:(編譯警告)函數(shù)xxx不是所有的控制路徑都有返回值

      分析:一般是在函數(shù)的if語句中包含return語句,當if語句的條件不成立時沒有返回值

      warning C4723: potential divide by 0 中文對照:(編譯警告)有可能被0除 分析:表達式值為0時不能作為除數(shù)

      warning C4804: '<' : unsafe use of type 'bool' in operation 中文對照:(編譯警告)‘<’:不安全的布爾類型的使用 分析:例如關系表達式“0<=x<10”有可能引起邏輯錯誤

      下載C語言常見錯誤集合大全-完整版-程序員必備手冊5篇word格式文檔
      下載C語言常見錯誤集合大全-完整版-程序員必備手冊5篇.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內容。

      相關范文推薦

        C語言常見錯誤小結[共5篇]

        C語言常見錯誤小結 - C/C++ / C語言 C語言的最大特點是:功能強、使用方便靈活。C編譯的程序對語法檢查并不象其它高級語 言那么嚴格,這就給編程人員留下“靈活的余地”,但還是......

        程序員入門進階手冊

        這篇文章,我主要是讓你成為更為專業(yè)的入門程序員。請注意,此時,你可能需要讀一些比較枯燥的書,但我想說,這些是非常非常重要的。你一定要堅持住。 編程技能 在系統(tǒng)地學習編程技能......

        個人簡歷常見錯誤

        必讀:6個簡歷里常見的錯誤 從頭到尾我也做過一些招聘工作,從簡歷篩選、通知面試、面試都在進行。發(fā)現(xiàn)很多人在簡歷中犯了不少錯誤,也許對于求職者來說是很小的問題,但是其實往往......

        論文常見格式錯誤[本站推薦]

        各位指導老師: 首先,對大家在畢業(yè)設計中付出的勞動表示衷心的感謝!大家辛苦了! 在近幾年的畢業(yè)設計中出現(xiàn)了一些問題,在此進行部分匯總,供大家參考,有則改之,無則加勉! 1、請各位老師......

        畢業(yè)論文常見錯誤

        畢業(yè)論文常見錯誤 1. 論文內容 ? 第1章緒論應包括以下幾方面內容:選題意義和背景;國內外研究現(xiàn)狀;本文研究內容及各章安排。 ? 第2章方案論證前,要先介紹設計要求。 ? 系統(tǒng)硬件設計......

        網(wǎng)絡管理員常見錯誤集錦

        協(xié)議分析器是網(wǎng)絡管理員庫中最強有力的工具之一。它能將難處理、耗時長、讓CEO們感到惱火甚至不得不重啟所有機器的問題轉變?yōu)槟芏虝r處理、易于在每周例行狀態(tài)報告中反映的......

        商務英語常見錯誤

        商務英語中常見錯誤Personal vs. Personnel 密切注意這些單詞的拼寫和重音!"Personnel"是個名詞意思是公司的職員。例如"Our company has the best personnel in the industr......

        領導向下溝通中的常見語言錯誤

        領導向下溝通中的常見語言錯誤 用戶: 一片田 專業(yè)度: 19164 時間: 2008-11-25 上午8:55 有效的溝通是不斷跨越障礙的過程。上下級溝通的障礙來自哪里?來自于溝通的一方或雙......