由上面這個例子看到,在一個有多個運算符連接起來的表達式中需要考慮運算符的優先級,這個例子很簡單。關于運算符優先級的概念其實在小學生的算術運算中就有這樣的概念了,只不過這里的運算符多了一些,要考慮的情況也就復雜了。
如果這個式子改寫一下,寫成:a=(c-a)*b;在運算時就以括號中的運算優先。
幾個簡化的運算表達式:
在C語言的程序中,經?吹竭@樣的運算,如:i++;或者k--;這是運算符號的簡化寫法。
1、加1運算的簡寫
當一個變量進行加1運算時,如a=a+1;這是變量自身加1,簡寫為a++;
2、減1運算的簡寫
當一個變量進行減1運算時,如a=a-1;這是變量自身減1,簡寫為a--;
3、加1個常量運算的簡寫
當一個變量與一個常量相加時,如a=a+5;這是變量自身加5,簡寫為a+=5;
4、減一個常量運算的簡寫
當一個變量與一個常量相減時,如a=a-5;這是變量自身減5,簡寫為a-=5;
5、乘一個常量運算的簡寫
當一個變量與一個常量相乘時,如a=a*5,這是變量自身乘5,簡寫為a*=5;
6、除一個常量運算的簡寫
當一個變量與一個常量相除時,如a=a/5;這是變量自身除5,簡寫為a/=5;
運算符的結合性(或稱作關聯性)
在一個復雜的表達式中,常常有許多運算符和變量,這時就要判斷優先級和結合性這二個因素。
例:-5+7; 這樣的一個表達式用結合性來判斷,因為運算符'-'和'+'相對于運算的數來說是‘左’結合的,所以就有'-5'和'+7'所以運算的結果為 2。
通過這個例子要知道什么是“左結合性”和“右結合性”
左結合性--變量(或常量)與左邊的運算符結合
右結合性--變量(或常量)與右邊的運算符結合
運算符的優先級和結合性表
從表中可以看出一個規律,凡是單目運算符都是“右結合”的,凡是雙目運算符都是“左結合”的。其中有一個?:運算符是三目運算符是右結合的,記住了這個規律,運算符的結合性也就掌握了。
如果代碼行中的運算符比較多,用括號確定表達式的操作順序,避免使用默認的優先級。
由于將表熟記是比較困難的,為了防止產生歧義并提高可讀性,應當用括號確定表達式的操作順序。
例如:
d = (high << 8) | low /*用括號把需要先運算的括起來*/
if ((a | b) && (a & c)) /*用括號把需要先運算的括起來*/
文章來源于領測軟件測試網 http://www.kjueaiud.com/