|
1 程序存在一定順序點(diǎn) 指的的在執(zhí)行過(guò)程中修改變量值的最晚時(shí)刻
在程序達(dá)到順序點(diǎn)的時(shí)候 之前所做的一切操作必須反映到后續(xù)的訪問(wèn)中
2順序點(diǎn)如下:
·每個(gè)完整表達(dá)式結(jié)束時(shí)
·&& || ?:三目運(yùn)算符 以及逗號(hào)表達(dá)式;的每個(gè)預(yù)算對(duì)象計(jì)算之后
·函數(shù)調(diào)用中對(duì)所有實(shí)際參數(shù)的求值完成之后(進(jìn)入函數(shù)體之前) 即先計(jì)算在傳入值
@f(k, k++); /* 在進(jìn)入函數(shù)前已經(jīng)計(jì)算好了 k k++; 遇到;逗號(hào)表達(dá)式++生效k++-> k=2 所以 2 ,1 */
@k = k++ + k++; /* 1. 2+2=4 未到達(dá)順序點(diǎn) 2. 此時(shí)遇到;順序點(diǎn)++計(jì)算生效 再計(jì)算兩個(gè)++ 得到6 */
@if( a-- && a ) /* 這里的順序點(diǎn)為&& 當(dāng)預(yù)算到&&時(shí)--預(yù)算 所以為false */
4.注釋 ///**/建議使用 // 避免一些版本控制軟件出現(xiàn)解析問(wèn)題
1. // this is \ ok heh 加\表示 換行 \為換行符
2. 會(huì)在編譯過(guò)程不是簡(jiǎn)單刪除注釋 而是用空格代替
3. ""內(nèi)的注釋無(wú)效 編譯器認(rèn)為都是字符串
4. "/*.....*/"不能被嵌套
5. 出色的注釋:
1 準(zhǔn)確易懂 防止二義性 錯(cuò)誤的注釋有害而無(wú)利
2 注釋是對(duì)代碼的提示 避免臃腫
3 一目了然的代目避免加注釋
4 不要用縮寫(xiě)來(lái)注釋代碼 這樣可能會(huì)產(chǎn)生誤解
5 注釋用于闡述原因不是用于描述程序的運(yùn)行過(guò)程
5.接續(xù)符\ 和轉(zhuǎn)義符
1.在連續(xù)單詞時(shí) 反斜杠不能有空格 下一行之前也不能有空格
2.接續(xù)符適合在定義宏代碼塊時(shí)用
3.轉(zhuǎn)義符\主要用于表示無(wú)回顯字符 作為轉(zhuǎn)義符使用時(shí)必須出現(xiàn)在字符或者字符串中
6.邏輯運(yùn)算符 || && !
1.注意||&&的短路運(yùn)算
||有1則為真
&&有0則為假
! c語(yǔ)言中的"!"只認(rèn)得0 只知道見(jiàn)了0就返回1 因此只要不是0 其運(yùn)算結(jié)果都是0 eg:!100 = 0;
2.三目運(yùn)算符
(a? b:c) 當(dāng)a為真時(shí)返回b的值 否則返回c的值
7.++ --
1. int k = (++x, x++, x+10); // k=15 x=3 從左往右計(jì)算
2. int i = 0;
int j = (++i)+(++i)+(++i);
/* j=7 原因是先加前兩個(gè)括號(hào)內(nèi)的為1+2 再加 4*/
貪心法讀++
1. 編譯器處理的每個(gè)字符應(yīng)該盡可能多的包含字符
2. 編譯器以從左向右的順序一個(gè)一個(gè)盡可能多的讀入字符
3. 當(dāng)即將讀入的字符不可能和已讀入的字符組成合法符號(hào)為止
8.位運(yùn)算
1.& 按位與0&1 = 0
| 按位或0|1= 1
^ 按位異或0^0 1^1= 0 相同取0 不同取1 與0異或?yàn)锳不變
~ 取反
<< 左移高位丟棄 低位補(bǔ)0
>> 右移高位補(bǔ)符號(hào)位 低位丟棄 正數(shù)符號(hào)位為0 eg:8>>3 (1000>>3) = 0001 = 1
2.放錯(cuò)準(zhǔn)則
1. 避免邏輯運(yùn)算符 位運(yùn)算符出現(xiàn)在同一表達(dá)式中 當(dāng)出現(xiàn)時(shí)盡量用括號(hào)()來(lái)
2. 小技巧:
左移n位相當(dāng)于*2的n次方
右移n位相當(dāng)于/2的n次方
3.右移x>>2 右端低位移除部分舍棄 左端高位根據(jù)符號(hào)位補(bǔ)0或者1 無(wú)符號(hào)或正數(shù)補(bǔ)0 負(fù)數(shù)補(bǔ)1
3.通過(guò)異或交換a b的值 表面上看去少使用了一個(gè)變量 但是實(shí)際上對(duì)內(nèi)存的讀寫(xiě)次數(shù)提高了 所以效率并不高
a = a^b;
b = a^b;
a = a^b;
9.C語(yǔ)言的隱式轉(zhuǎn)換類型
1 算術(shù)運(yùn)算式中 低類型轉(zhuǎn)換為高類型
2 賦值表達(dá)式中 表達(dá)式的值轉(zhuǎn)換為左邊變量的類型
3 函數(shù)調(diào)用時(shí) 實(shí)參轉(zhuǎn)換為形參的類型
4 函數(shù)返回值 return 表達(dá)式轉(zhuǎn)換為返回值類型
char ->shortchar->int
short->int
int ->unsigned int ->long ->unsigned long ->double <- float
江老師的神圖: http://www./
![]() |
|
|
來(lái)自: 戴維圖書(shū)館 > 《筆記》