目錄
一、錯誤案列
二、優先級規律
1.優先級表
2.優先級總結
一、錯誤案列
1.flag的二進制運算式中只有一個1,現在判斷flags二進制形式在flag為1的那一位上是否也為1:
if(flag & flags !=0);
2.將getc函式的回傳值賦給c并判斷是否為EOF:
while(c=getc(in)!=EOF);
3.類似2的問題再復雜些:
if(t=BTYPE(pt1->aty)==start || t==UNION);
以上都是有優先級問題的代碼,你都能發現他們的問題嗎,如果不能,來看看下面對優先級的解讀和記憶,
二、優先級規律
1.優先級表

[結合性指的是編譯器解釋的順序,例如:a,b,c自左向右解釋為(a,b)c 而不是a,(b,c) ]
2.優先級總結
①()[ ] -> . 這類非運算子優先級為1 ,
②單目運算子優先級為2,型別轉化也是單目運算子哦, (自右至左)
③雙目運算子優先級為3,其中
1.算數運算子(% / *) > (+ -)
2.移位運算子(>> <<)
3.關系運算子(> ,< , >= ,<= )> (== !=)
4.位運算子(& > ^ > |)
5.邏輯運算子(&& > ||)
6.賦值運算子(= += -= &= ……) (自右至左)
④三目運算子優先級為4,(?:) (自右至左) [例如:(a?b,(c?,d,e ) )]
⑤,優先級為5
小提醒:在涉及賦值運算子時和容易發生錯誤,要考慮有無必要加上()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/297878.html
標籤:其他
上一篇:怎么微信WeixinJSBridge.invoke支付成功居然不跳轉?還把我頁面給關了!這篇文章就告訴你What should I do!
