C語言中不容易掌握的問題(2)

2021-08-29 05:17:40 字數 1369 閱讀 2504

1)不要去運用太多的遞增運算子和遞減運算子。

(1)當在函式的形參上應用過多的遞增運算子時

例如: int num=1;

while(num<6)

printf("num=%d; num*num=%d\n",num,num*num++);

按照原意是想列印num 和 num平方的值 再自加。但是printf()在對引數求值時可能先對後乙個num*num++

求值,那麼列印的值就為 num+1 num*num

因為再c語言中編譯器可以選擇先對哪個引數求值。

類似在表示式中也會發生類似的情況

例如num=num*2+(++num);

編譯器可能先執行後面的++num 所以不要用太多的自增運算子。

2)表示式是由運算子和運算物件組成 每乙個表示式都有自己的值

表示式														值

4 4

3+4 7

c=3+4 7

表示式中 算術運算子的優先順序最大 關係運算子的優先順序次之 賦值運算子的優先順序最小

在關係運算子中 > < >= <= 的優先順序 大於 == !=

3)逗號運算子

int i;

int j;

for(i=1,j=2;i<5;i++,j++);

逗號運算子使for迴圈變得更加的靈活。

逗號運算子保證了被分割的表示式從左向右計算

整個逗號表示式的值為右邊的值。例如 a=(i=3,b=4) 該表示式的值為 4

4) !運算子的優先順序和++ – 同樣高,&&和||運算子的優先順序比關係運算的更低。

&&和|| c語言保證表示式是由從左往右計算,也相當於是乙個序列點。而且c保證一旦發現某個元素可以讓整個表示式有結果,便會終止計算。

例如 if(a!=0&&12/a>0)

當發現 a的值為零時,會終止計算不會去計算 12/a 發生截止中斷

5)關於程式跳轉 :continue break goto

continue:

提前終止這一次迴圈的以後的操作。

如果是 while 或是 do while 直接到下一次迴圈的判斷語句處

如果是for 直接到這一次迴圈的更新語句。

break :

終止迴圈 可以用在迴圈裡,也可以應用在 switch 裡

goto :跳轉到標籤處。

acm 不容易系列 信封問題 c 實現

大家常常感慨,要做好一件事情真的不容易,確實,失敗比成功容易多了!做好 一件 事情尚且不易,若想永遠成功而總從不失敗,那更是難上加難了,就像花錢總是比掙錢容易的道理一樣。話雖這樣說,我還是要告訴大家,要想失敗到一定程度也是不容易的。比如,我高中的時候,就有乙個神奇的女生,在英語考試的時候,竟然把40...

C 中不容易記憶的訪問屬性問題

在學習c 的繼承時,我們經常會被訪問屬性搞混,也不容易記憶,對於初學者來說,就更加不易理解了。那麼怎樣才能把它記住並且不容易忘呢?那就是在理解的基礎上去記憶,大多數書上對這一塊的說明往往都是三大段文字,不暈也被繞暈了,那麼只有你理解了,把它總結提煉成自己的語言,就一切都ok了。我們先來看一下類的繼承...

hdu2042 不容易系列之二(C語言)

problem description 你活的不容易,我活的不容易,他活的也不容易。不過,如果你看了下面的故事,就會知道,有位老漢比你還不容易。重慶市郊黃泥板村的徐老漢 大號徐東海,簡稱xdh 這兩年辛辛苦苦養了不少羊,到了今年夏天,由於眾所周知的高溫乾旱,實在沒辦法解決牲畜的飲水問題,就決定把這些...