當前位置:首頁 » 編程語言 » c語言錯誤提示

c語言錯誤提示

發布時間: 2023-08-06 21:37:59

A. c語言錯誤提示identifier 'b'是什麼意思

indentifier'b' 的意思是,未定義的變數b。

那麼,在使用變數b之前需要根據變數b的數據類型做聲明,如果是整型,那麼使用int;如果是字元型,使用char ;如果是小數類型,使用float/double等,根據精度而定。

標識符(identifier)是指用來標識某個實體的一個符號,在不同的應用環境下有不同的含義。在計算機編程語言中,標識符是用戶編程時使用的名字,用於給變數、常量、函數、語句塊等命名,以建立起名稱與使用之間的關系。

標識符通常由字母和數字以及其它字元構成,在編程語言中,標識符就是程序員自己規定的具有特定含義的詞,比如類名稱,屬性名稱,變數名等。

C語言中對標識符的規定

1.標識符由字母(A-Z,a-z)、數字(0-9)、下劃線「_」組成,並且首字元不能是數字,但可以是字母或者下劃線。例如,正確的標識符:abc,a1,prog_to。

2.不能把C語言關鍵字作為用戶標識符,例如if ,for, while等.

3.標識符長度是由機器上的編譯系統決定的,一般的限制為8字元(註:8字元長度限制是C89標准,C99標准已經擴充長度,其實大部分工業標准都更長)。

4.標識符對大小寫敏感,即嚴格區分大小寫。一般對變數名用小寫,符號常量命名用大寫。

5.標識符命名應做到「見名知意」,例如,長度(length),求和、總計(sum),圓周率(pi)……

(1)c語言錯誤提示擴展閱讀:

數據類型在數據結構中的定義是一個值的集合以及定義在這個值集上的一組操作。

變數是用來存儲值的所在處,它們有名字和數據類型。變數的數據類型決定了如何將代表這些值的位存儲到計算機的內存中。在聲明變數時也可指定它的數據類型。

所有變數都具有數據類型,以決定能夠存儲哪種數據。數據類型包含數字型、位元組型、文本型。

由於變數讓你能夠把程序中准備使用的每一段數據都賦給一個簡短、易於記憶的名字,因此它們十分有用。

變數可以保存程序運行時用戶輸入的數據(如使用InputBox函數在屏幕上顯示一個對話框,然後把用戶鍵入的文本保存到變數中)、特定運算的結果以及要在窗體上顯示的一段數據等。簡而言之,變數是用於跟蹤幾乎所有類型信息的簡單工具。

變數聲明後沒有賦值的話 編譯器會自動提示並賦予默認值。

B. C語言編程時 都有什麼樣的錯誤提示

Ambiguous operators need parentheses
不明確的運算,需要用括弧括起來

Ambiguous symbol 'xxx'
不明確的符號

Argument list syntax error
參數表語法錯誤

Array bounds missing
丟失數組界限符

Array size too large
數組尺寸太大

Bad character in parameters
參數中有不適當的字元

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

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

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

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

Call of non-function
調用未定義的函數

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

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

Case outside of switch
Case 出現在 switch 之外

Case statement missing
漏掉了 Case 語句

Case syntax error
Case 語法錯誤

Case outside of switch
Case 出現在 switch 之外

Case statement missing
漏掉了 Case 語句

Case syntax error
Case 語法錯誤

Code has no effect
代碼不可能執行到

Compound statement missing }
復合語句漏掉了"}"

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

Constant expression required
要求常量表達式

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

Conversion may lose significant digits
轉換時會掉失有意義的數字

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

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

Declaration missing ;
說明缺少分號";"

Declaration syntax error
說明中出現語法錯誤

Default outside of switch
default出現在switch語句之外

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

Division by zero
用零作除數

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

Enum syntax error
枚舉類型語法錯誤

Enumeration constant syntax error
枚舉常數語法錯誤

Error directive: xxx
錯誤的編譯預處理命令

Error writing output file
寫輸出文件錯誤

Expression syntax error
表達式語法錯誤

Extra parameter in call
調用時出現多餘錯誤

File name too long
文件名太長

Function call missing )
函數調用缺少右括弧

Function definition out of place
函數定義位置錯誤

Function should return a value
函數返回一個值

Goto statement missing label
goto 語句沒有標號

Hexadecimal or octal constant too large
16進制或8進制常數太大

Illegal character 'x'
非法字 x

Illegal initialization
非法的初始化

Illegal octal digit
非法的8進制數字

Illegal pointer subtraction
非法的指針相減

Illegal structure operation
非法的結構體操作

Illegal use of pointer
指針使用非法

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

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

Incompatible storage class
存儲類別不相容

Incompatible type conversion
不相容的類型轉換

Incorrect number format
錯誤的數據格式

Incorrect use of default
default使用不正確

Invalid indirection
無效的間接運算

Invalid pointer addition
指針相加無效

Irrecible expression tree
無法執行的表達式運算

Lvalur required
需要邏輯值(0或非0值)

Macro argument syntax error
宏參數語法錯誤

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

Mismatched number of parameters in definition
定義中參數個數不匹配

Misplaced break
此處不應出現break語句

Misplaced continue
此處不應出現continue語句

Misplaced decimal point
此處不應出現小數點

Misplaced elif directive
此處不應出現編譯預處理elif

Misplaced else
此處不應出現else

Misplaced else directive
此處不應出現編譯預處理 else

Misplaced endif directive
此處不應出現編譯預處理 endif

Must be addressable
必須是可以編址的

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

No declaration for function 'xxx'
沒有函數 xxx 的說明

No stack
缺少堆棧

No type information
沒有類型信息

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

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

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

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

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

Numeric constant too large
數值常數太大

Out of memory
內存不夠用

Parameter 'xxx' is never used
參數 xxx 沒有用到

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

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

Possibly incorrect assignment
賦值可能不正確

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

Register allocation failure
寄存器定址失敗

Repeat count needs an lvalue
重復計數需要邏輯值

Size of structure or array not known
結構體或數組的大小不確定

Statement missing ;
語句後缺少";"

Structure or union syntax error
結構體或聯合體語法錯誤

Structure size too large
結構體的尺寸太大

Subscripting missing ]
下標缺少右方括弧

Superfluous &with function or array
函數或數組中有多餘的"&"

Suspicious pointer conversion
可疑的指針轉換

Symbol limit exceeded
符號超限

Too few parameters in call
函數調用時的實參少於函數的參數

Too many error or warning messages
錯誤或警告信息太多

Too much auto memory in function
函數中用到的局部存儲太多

Too much global data defined in file
文件中全局數據太多

Too consecutive dots
兩個連續的句點

Type mismatch in parameter xxx
參數xxx類型不匹配

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

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

Unable to open include file 'xxx'
無法打開被包容的文件 xxx

Bit field too large
位欄位太長

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 assembler 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 類型的函數不應有返回值

Wrong number off arguments
調用函數時參數數目錯

'xxx' not an argument
xxx 不是參數

'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語言編程最常見的15個錯誤

C語言編程最常見的15個錯誤

C語言是一種結構化語言。它層次清晰,便於按模塊化方式組織程序,易於調試和維護。以下是關於C語言編程最常見的15個錯誤,希望大家認真閱讀!

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

main()

{ int a=5;

printf("%d",A); }

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

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

main()

{ float a,b;

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

%是求余運算,得到a/b的整余數。整型變數a和b可以進行求余運算,而實型變數則不允許進行“求余”運算。

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

char c;

c="a";

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

4.忽略了“=”與“==”的區別。

在許多高級語言中,用“=”符號作為關系運算符“等於”。如在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”後面沒發現分號,就把下一行“b=2”也作為上一行語句的一部分,這就會出現語法錯誤。改錯時,有時在被指出有錯的一行中未發現錯誤,就需要看一下上一行是否漏掉了分號。

{ z=x+y;

t=z/100;

printf("%f",t);}

對於復合語句來說,最後一個語句中最後的分號不能忽略不寫。

6.多加分號。

對於一個復合語句,如:

{ z=x+y;

t=z/100;

printf("%f",t);

};

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

又如:

if (a%3==0);

I++;

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

再如:

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

{scanf("%d",&x);

printf("%d",x);}

本意是先後輸入5個數,每輸入一個數後再將它輸出。由於for()後多加了一個分號,使循環體變為空語句,此時只能輸入一個數並輸出它。

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

int a,b;

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

這是不合法的。Scanf函數的作用是:按照a、b在內存的地址將a、b的值存進去。“&a”指a在內存中的地址。

8.輸入數據的方式與要求不符。

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

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

3,4

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

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

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

3,4

此時不用逗號而用空格或其它字元是不對的。

3 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.輸入輸出的'數據類型與所用格式說明符不一致。

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

a=3;b=4.5;

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

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

11.輸入數據時,企圖規定精度。

scanf("%7.2f",&a);

這樣做是不合法的,輸入數據時不能規定精度。

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

例如:根據考試成績的等級列印出百分制數段。

switch(grade)

{ case 'A':printf("85~100 ");

case 'B':printf("70~84 ");

case 'C':printf("60~69 ");

case 'D':printf("<60 ");

default:printf("error ");

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

例如

case 'A':printf("85~100 ");break;

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

main()

{static int a[10]={1,2,3,4,5,6,7,8,9,10};

printf("%d",a[10]);

}

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

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

scanf("%s",&str);

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

scanf("%s",str);

;
熱點內容
安卓源碼版本 發布:2025-02-06 20:51:34 瀏覽:429
安卓系統網路播放器哪個好 發布:2025-02-06 20:42:02 瀏覽:818
頭條緩存的視頻格式 發布:2025-02-06 20:32:18 瀏覽:116
ftp不顯示文件夾 發布:2025-02-06 20:30:37 瀏覽:127
蘋果手機解壓怎麼打開 發布:2025-02-06 20:29:35 瀏覽:476
單片機程序存儲器 發布:2025-02-06 20:29:31 瀏覽:209
串的c語言 發布:2025-02-06 20:25:44 瀏覽:750
編程函數總結 發布:2025-02-06 20:09:11 瀏覽:317
編程obj 發布:2025-02-06 19:59:52 瀏覽:845
津貼腳本 發布:2025-02-06 19:44:10 瀏覽:742