語法錯誤c語言
㈠ 作為c語言初學者,經常遇見哪些語法錯誤
這里常見會見到一些同學經常犯這種錯誤,scanf(「...」, 參數1, 參數2, ...);其中參數輸入是指針類型,所以示例中需要b需要取地址,為什麼char a[100]不用取地址呢?因為char a[100]可以看做指針,只需要把a的首地址寫入即可。
C語言常見語法錯誤
跟一些同學說了一下,他彷彿又有點明白了。然而他又說怎麼又是有錯誤的,我明明按照你的要求參數寫入時指針類型。那同學還特意地指出程序裡面說:我申請了一個結構體指d,填入的「d->b」參數不是指針嗎?聽到他這樣說,有問題當然要糾正啦!語重心長地對他說,大哥!你認真看一下,d->b應該是int類型,而不是指針類型吧?他聽了好像不怎麼明白,我就舉了一個例子,結構體好像是一個容器,容器裡面存放著類型變數,而通過結構體容器找裡面的內容是比如找的是結構體成員b,那b的類型是int型,具體怎麼找用d->b找到b變數,那d->b是什麼類型呢?當然是d結構體所指向與b的int類型。
C語言常見語法錯誤
這一句沒語法錯誤,卻是最多初學者這樣去寫的,他們就會說,為什麼我輸入一個數字後按回車怎麼沒反應的呢?咋一看程序才發現多了一個」\n」,具體原理是這樣的,當你程序是scanf(「%d」, &i)輸入數字後回車是可以輸入的,但是變成scanf(「%d\n」, &i);時候就需要回車兩次,因為\n需要格式化輸入。
C語言常見語法錯誤
頭文件寫錯也是很多人犯的,比如卻後綴『.h』,系統頭文件需要使用<>括住,而自定義頭文件使用」 」,在linux C裡面<>和」 」還是有區別的。
正確寫法是:
#include <stdio.h>
#include <string.h>
#include 「func.h」
C語言常見語法錯誤
這里混淆了字元常量與字元串常量,字元常量是使用單引號括起來的單字元,字元串常量才是使用雙引號,正確寫法是char c = 『a』;或者char *c = 「a」;
C語言常見語法錯誤
這里也是很多初學者犯的錯誤,忽略『=』和『==』的區別。在C語言中『=』是賦值運算符,『==』是關系運算符,顯然這里做的是i是否等於0的判斷,這里應該改成if(i == 0) i++;
C語言常見語法錯誤
這里的問題也是初學者犯得非常多的錯誤,不加分號或多加分號。很多學生都會問,我看了幾次程序,確定沒什麼問題的啦!還是對著你的示常式序敲的,不可能錯的。認真地幫他看了一下,原來都是少加分號和多加分號了。int i = 0; 需要加分號,而if(i == 0)和for循環後面不需要加分號,因為如果加了分號,if語句就失去判斷的作用而for就會失去循環的作用。因為『;』代表的是結束。
C語言常見語法錯誤
還有一些格式上的錯誤、關鍵詞寫不完整、區分大小寫。正確應該是scanf(「%d%d%d」, a, b, c);
C語言常見語法錯誤
總結一下,學習嵌入式編程特別是在C語言上要學會如何找錯誤,一般有錯誤都是在編譯輸出終端裡面找,會提示那一行出錯或者錯的是什麼編譯器都會大概告訴你,學會找出問題所在再去解決它才是我們真正需要的。
㈡ C語言的語法錯誤和邏輯錯誤的區別
語法錯誤: 在編譯的時候會提示你。比如說:for(i=0,i<10,i++)
在編譯的時候會提示你錯誤,要把逗號改成分號。
邏輯錯誤:沒有錯誤提示,能運行,但是達不到自己想要的結果。
㈢ C語言檢查語法錯誤
修改如下世敏:
#include <stdio.h>
#include <math.h>
int dt(int x,int y,int z)/*注意這里*/
{
int d;
d=(y*y)-(4*x*z) ;/*注意這里*/
if (d==0) return 0;
else if (d>0) return 1;
else return 2;
}
int gen(int x,int y,int z) /*注意這里*/
{
int t;
t=((-y)+sqrt(dt(x,y,z)))/(2*x);
return (t);
}
int main(void)
{int a,b,c,g,h;
printf("Please enter a,b,c.\n");
scanf("%d%d%d",&a,&b,&c);
g=dt(a,b,c);
h=gen(a,b,c);
if (g==0)
printf("The anser is x1=x2=%d.\n",h); /*注意這里*/
else
{if (g==1)
printf("The anser is x1=%d,x2=%d.\n"搜頌枝,h,((-b)/a)-h); /櫻判*注意這里*/
else
printf("The anser is x1=%d,x2=%d.\n",h,((-b)/a)-h); /*注意這里*/
}
return 0; /*注意這里*/
}
㈣ c語言語法錯誤和語義錯誤有什麼區別,麻煩舉個例子
語法錯誤可以看作是編碼出現了違反C語言規則的錯誤,一般編譯或者鏈接時,
都會報錯的。
而語義錯誤,也可以叫做邏輯錯誤,
也就是說你的代碼完全符合C語言的規范,不會出現編譯/鏈接的錯誤,
但是,在邏輯上有錯誤。
舉個簡單的例子,
加入編一個代碼來統計int數組a的成員總和,成員總數為N:
for(int i=0;i<N;i++;) //這里在i++後面多了一個分號,這是語法錯誤
sum=sum+a[i];
for(int i=0;i<=N;i++) //這里多了一個i=N的取值,這是語義錯誤
sum=sum+a[i];
㈤ C語言調試中syntax error 是什麼意思
C語言中的syntax error是語法錯誤的意思,「語法錯誤」是在輸入代碼過程中輸入錯誤的語句,是程序發生了語法上的錯誤。
1、syntax error錯誤,例子:printf("trete")就是一個有語法錯誤的句子,它沒有加分號,正確的應該為:printf("trete"),不正確就會彈出syntax error。
2、在C/C++中指語句的格式不對,比如少寫了分號、少寫或多寫了括弧、寫錯了關鍵字等。
3、如果是java語言在myeclipse下做開發,這個錯誤是該腳本語言所用的語言編碼不對,可換成UTF-8或者GBK。在Java語言中,以下的程式是正確的:System.out.println("Hello World")以下的程式不正確:System.out.println(Hello World)。
(5)語法錯誤c語言擴展閱讀
C語言的特性
1、C語言是一個有結構化程序設計、具有變數作用域(variable scope)以及遞歸功能的過程式語言。
2、C語言傳遞參數均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
3、不同的變數類型可以用結構體(struct)組合在一起。
4、只有32個保留字(reserved keywords),使變數、函數命名有更多彈性。
5、部分的變數類型可以轉換,例如整型和字元型變數。
6、透過指針(pointer),C語言可以容易的對存儲器進行低級控制。
7、編譯預處理(preprocessor)讓C語言的編譯更具有彈性。