C語言常見錯誤分析 (轉)
C語言常見錯誤分析:
錯誤分類
語法錯
邏輯錯
執行錯
0.忘記定義變數:
main()
{x=3;y=6;
printf(“%d
”,x+y);
1.C語言的變數一定要先定義才能使用;
2.輸入輸出的資料的型別與所用格式說明符不一致
int a=3;float b=4.5;printf(“%f%d
”,a,b);
它們並不是按照賦值的規則進行轉換(如把4.5轉換為4),而是將資料在單元中的形式按格式符的要求組織輸出(如b佔4個位元組,只把最後兩個位元組的資料按%d,作為整數輸出)
3.未注意int型資料的數值範圍
int型資料的數值範圍(-32768~32768)
int num=89101;
printf(“%d”,num);
會將超過低16位的數截去從而得到23563
注意:定義了long型,而在輸出時仍用”%d”說明符,仍會出現以上錯誤
4.輸入變數時忘記使用地址符
scanf(“%d%d”,a,b);
5.輸入時資料的組織與要求不符
對scanf中格式字串中除了格式說明符外,對其他字元必須按原樣輸入
6.誤把”=“作為”等於”比較符
“=“為附值運算子
“==“為比較運算子
7.語句後面漏分號
{
t=a;
a=b;
b=t
}
它是pascal的語法
8.不該加分號的地方加了分號
if(a>b);
printf(“a is larger than b
”);
for(i=0;i<10;i++);
{
scanf(“%d”,&x);
printf(“%d
”,x*x);
}
9.對應該有花括弧的複合語句,忘記加花括弧
sum=0;
i=1;
while(i<=100)
sum=sum+1;
i++;
10.括弧不配對
while((c=getchar()!=‘#’)
putchar(c);
11.在用標識時,忘記了大寫字母和小寫字母的區別
{
int a,b,c;
a=2;
b=3;
C=A+B;
printf(“%d+%d=%D”,A,B,C);
}
12.引用陣列元素時誤用發圓括弧
{
int i,a(10);
for(i=0;i<10;i++)
scanf(“%d”,&a(i));
}
13.在定義陣列時,將定義的”元素個數”誤認為是”可使用的最大下標值
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int i;
for(i=1;i<=10;i++)
printf(“%d”,a[i]);
}
14.對二維或多維陣列的定義和引用的方法不對
{
int a[5,4];
…
printf(“%d”,a[1+2,2+2]);
…
}
15.誤以為陣列名代表陣列中全部元素
{int a[4]={1,2,3,4};
printf(“%d%d%d%d”,a);
}
16.混淆字元陣列與字元指標的區別
main()
{
char str[40];
str=“Computer and c”;
printf(“%s
”,str);
}
17.在引用指標變數之前沒有對它賦予確定的值
{
char *p;
scanf(“%s”,p);
}
{
char *p,c[20];
p=c;
scanf(“%s”,p);
}
18.switch語句的各分支中漏寫 break語句
混淆字元和字串的表示形式
…
char sex;
sex=“M”;
…
19.使用自加(++)和自減(--)運算子時出的錯誤
{
int *p,a[5]={1,3,5,7,9};
p=a;
printf(“%d”,*p++);
}
注意於*(++p)的區別;
20.所的函式在呼叫語句之後才定義,而又在呼叫前未加說明
main()
{float x,y,z;
x=3.5;y=-7.6;
z=max(x,y);
printf(“%f”,z);
}
float max(float x,float y)
{
return (x>y?x:y);
}
21.誤認為形參值的改變會影響實參的值
s(int x,int y)
{int t;
t=x;x=y;y=t;
}
main()
{int a,b;
a=3;b=4;
swap(a,b);
printf(“%d,%d
”,a,b);
}
22.函式的實參和形參型別不一致
fun(float x,float y)
main()
{
int a=3,b=4;
c=fun(a,b);
…
}
23.不同類的型指標混用
{
int i=3,*p1;
float a=1.5,*p2;
p1=&i;p2=&a;
p2=p1;
printf(“%d,%d
”,*p1,*p2);
}
24.沒有注意函式引數的求值順序
int i=3;
prinft(“%d,%d,%d
”,i,++i,++i);
結果為5,5,4
因為VC++是採取自右至左的順序求函式的值
C標準沒有具體規定函式引數求值的順序
25.混淆陣列名與指標變數的區別
{ int i,a[5];
for(i=0;i<5;i++)
scanf(“%d”,a++);
}
{int a[5],*p;
p=a;
for(int i=0;i<5;i++)
scanf(“%d”,p++)
}
{int a[5],*p;
for(p=a;p scanf(“%d”,p);
}
26.混淆結構體型別與結構體變數的區別
struct worker
{long int num;
char name[20];
char sex;
int age;
};
worker.num=187045;
strcpy(worker.name,”ZhangFun”);
worker.sex=‘M’;
worker.age=18;
27.使用時忘記開啟,用只讀方式開啟,卻企圖向該檔案輸出資料
if(fp=fopen(“test”,”r”))==NULL)
{printf(“cannot open this file
”);
exit(0);
}
ch=fgetc(fp);
while(ch!=‘#’)
{ch=ch+4;
fputc(ch,fp);
ch=fgetc(fp);
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-962138/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 4- C語言常見錯誤C語言
- go語言初學者常見錯誤Go
- 【常見錯誤】--Nltk使用錯誤
- C語言常見使用問題2C語言
- C語言指標常見問題C語言指標
- SSH常見錯誤
- MySQL 常見錯誤MySql
- Go常見錯誤集錦 | 字串底層原理及常見錯誤Go字串
- Go 常見錯誤集錦 | 字串底層原理及常見錯誤Go字串
- Mysql:1236常見錯誤MySql
- npm install 常見錯誤NPM
- oracle 19c rac打補丁常見錯誤Oracle
- 使用 CocoaPods 時常見錯誤
- mysql8 常見錯誤MySql
- MySQL 安裝常見錯誤MySql
- 常見的錯誤 SQL 用法SQL
- spring事務常見錯誤Spring
- opencv 編譯常見錯誤OpenCV編譯
- Go常見錯誤第15篇:interface使用的常見錯誤和最佳實踐Go
- 令C/C++初學者頭疼,5個常見C/C++錯誤C++
- 【彙總】Python語言常見報錯及解決方案!Python
- 變數命名以及常見錯誤變數
- NPM INSTALL常見錯誤(windows篇)NPMWindows
- 常見的 PostgreSQL 升級錯誤SQL
- 8種常見SQL錯誤用法SQL
- 常見 HTTP 錯誤程式碼大全HTTP
- Shell:常見錯誤總結(一)
- 搭建github部落格常見錯誤Github
- PHP編譯安裝時常見錯誤解決辦法,php編譯常見錯誤PHP編譯
- 高階資料分析流程要避免的常見錯誤KG
- C語言程式碼區錯誤以及編譯過程C語言編譯
- 常見的資料分析誤區
- C語言——gdb除錯C語言除錯
- AndroidStudio之NDK常見編譯錯誤Android編譯
- PCB原理圖設計常見錯誤
- Git相關 | Git 常見的錯誤Git
- mdxbuilder打包mdx時的常見錯誤UI
- Hadoop常見錯誤及解決方案Hadoop
- 常見的授權錯誤及原因