c語言語法陷阱總結

2021-07-25 03:50:05 字數 1567 閱讀 5680

學習c語言也有一段時間了,關於語法上的錯誤,現在基本上也沒犯過,不過,我還是想小結一下。

運算優先順序的問題,其實在背乘法表,的時候就已經開始接觸了。那時候我們知道在加減乘除的混合運算中,先算乘除,再算加減,如果遇到括號,先算括號裡的內容,這就是優先順序問題。

那麼在 c語言中,我們也有很多運算,有運算就有優先順序的問題,關於優先順序的問題,下面的表中會有一些總結。

從這個表中我們可以看出很多問題,首先是()的優先順序最大,所以,如果你想寫一下表示式,但是有不清楚優先順序的具體大小,最保險的方法還是在你想要的運算順序中合適的加上(),這樣就能保證邏輯的正確執行。然後是單目運算子的優先順序大於雙目優先順序,大於三目運算子優先順序。邏輯運算子優先順序 > 關係運算子優先順序。在所有的運算子中,逗號的優先順序最低,其次是賦值運算子。

記得剛學c語言的時候,對於什麼時候加分號,什麼時候不加分號,還是考慮可好久的,現在,我把這個問題總結一下。

其實總結起來內容很少,判斷語句後面沒有分號,正常的語句都有分號。

分號問題多了少了都會有很多問題,比如:

if (x[i]>big);

big=x[i];

這裡顯然if語句後面多了乙個分號,那後果就是編譯器所呈現的內容和預期的大不相同,如果你本來想寫成:

if (x[i]>big)

big=x[i];

那麼結果這能是

if (x[i]>big){}

big=x[i];

如果,要是少寫了乙個分號,還是有很多問題,比如:

if (n<3)

return

data=x[0];

time=x[1];

code=x[2];

顯然,return後面少了乙個分號,如果你本來想什麼也不返回,那麼寫成這樣之後,你會得到的結果是將data=x[0];返回。

上面舉的例子都是編譯器沒有報錯的情況下,當然大多數情況下編譯器都是會報錯的,不過,這個問題還是得高度注意。

在說這個問題之前,還是先來看乙個程式片段吧:

if (x==0)

if(y==0)error();

else

這個程式的本意是x=0時,除非y=0,然後呼叫error函式,否則不做任何處理;x!=0時,程式先將x與y的和賦給z,然後以z的位址為引數來呼叫函式f。

但是實際執行的結果卻大不相同,大概是這個樣子的:

if (x==0)

}

也就是說,當x!=0時,不做任何處理,顯然和寫程式的初衷不同,那麼我們應該怎麼解決這個問題呢?

先來找不同吧:

if (x==0)

else

是的,就是在第乙個if後加了一對{},雖然if中只有一條語句,但還是得加上,就是為了避免這種問題。

C語言語法

printf 01f n double 2 1 printf 02f n double 2 1 保留兩位小數 陣列賦值 include memset al,0,sizeof al 輸入浮點數 while scanf lf n eof 字串比較 include char a 11 1234567890...

C言語語法總結 隨時更新

一 gccvisual studio 1.f5或ctrl f5或本地windows偵錯程式 把原 編譯成可執行檔案 2.生成 編譯 生成 obj目標檔案 3.生成 僅用於專案 僅鏈結 cdemo 生成可執行檔案 exe 2.3 步等於1 二 語法 1.puts hello world 輸出字串 2....

C語言語法基礎考試

c語言語法基礎考試 第2輪 學員姓名 試卷說明 1 本試卷共 25題,部分來自 intel 微軟 ti等公司的面試題,其餘出自平時基礎課程。2 本試卷主要目的是考查對 c語言本身的理解程式,而非演算法測試。3 所有題目均需相關說明,yes no 型回答均不得分。4 從實際專案開發的角度回答問題,切忌...