學習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 從實際專案開發的角度回答問題,切忌...