C語言算術表達式與數學中相似,是由數字和運算符號組成的式子,可以簡單清晰地記錄或描述計算過程和內容。
我們把算術運算符與數據結合得到的式子叫做算術表達式,把有賦值號的式子叫賦值表達式,把逗號運算符表示的式子叫逗號表達式。
C語言中的算術運算符包括:+、-、*、/、%。它們都是雙目運算符,即運算對象有兩個。使用時需要注意以下幾點:
1、乘號*在C語言中不可省略,即a*b。
2、%為取余數,它的運算對象只能是整型。
3、運算符在計算時如果運算符兩邊的數據類型相同,則得到的數據也是這個類型,例如:1/2=0。因為1,2都是整型,則結果也是整型。
4、如果運算符左右兩邊的數據類型不同時,要往精確度更高的類型轉換,例如:1.0/2=0.5,因為1.0是浮點型,2是整型,浮點型的精度比整型精度高,所以要把整型自動轉為浮點型。即2變為2.0,然后式子變為1.0/2.0,式子左右兩邊類型相同,都為浮點型,結果也為浮點型。具體的轉換規則可以認為往取值范圍更高的那方轉換。即:char > short > unsigned short > int > unsigned int > float > double。
5、算術表達式沒有改變或保存表達式的值。例如:a+b。這是一個算術表達式,它只表示將a與b兩個數相加,但是需要注意a與b的值都沒有改變,而且它們的和值也沒有保存下來。這是很容易出現的一種錯誤。例如:a=(b++,c=c+2,a+b,b+c) 這個表達式先算b++,即b自加1。然后算c=c+2,c的值改變。然后a+b,這一步不涉及到賦值運算,所以a與b的值都不變。然后b+c,這一步是逗號表達式的最后一個式子,我們經過計算是將這個式子的值賦值給a,計算時用到的b是第一個式子的結果,用到的c是第二個式子運行的結果,第三個式子并沒有改變任何數值。
6、算術運算符的優先級在眾多的運算符中僅次于()與單目運算符。其中*、/、%的優先級比+、-的優先級高一級。
7、算術運算符的結合性為自左向右。例:a+b+c-d 是先算a+b在加c在減d,運算順序是自左向右的。
算術運算符雖然只是一個由算術運算符與數據結合的式子,但是它在實際應用中需要注意的問題有很多,這需要我們通過大量的練習最終總結出一些規律。