C語言裏的算數用算符
+ 加法運算符
- 減法運算符,或負值運算符
* 乘法運算符
/ 除法運算符
% 模運算符,或稱取餘運算符,要求%兩側均爲整型數據 內存
運算順序
1> 算術表達式
用算術運算符將數據鏈接起來的式子,稱爲「算術表達式」。好比a + b、10 * 5等。若是表達式比較複雜的話,那麼就要注意一下它的運算順序。表達式的運算順序是按照運算符的結合方向和優先級進行的。
2> 結合方向
算術運算符的結合方向是從左到右。例如表達式2+3+4,先計算2+3。
3> 優先級
優先級越高,就越先結合,此時並無參與運算僅僅是操做符與操做數結合到了一塊兒:
負值運算符(-) > 乘(*)、除(/)、模(%)運算符 > 加(+)、減(-)運算符
4> 小括號
若是須要先計算優先級低的可使用小括號()括住,小括號的優先級是最高的!
例如4+5*8-2默認的計算順序是:*、+、-
若是想先執行加法運算,就能夠這樣寫:(4+5)*8-2,最後的結果都是不同的\
5>計算順序
多個操做符相互混合運算的話,優先級高的操做符與其操做數先結合到了一塊兒,成爲一個總體,
可是其並無計算,計算時要看最外層的運算符是什麼,它會按照最外層操做符的結合方向進行計算,
而後是剝洋蔥式一層一層的計算
例如表達式2*4+5*8/-2的計算順序爲:首先 - 與 2 結合 ,而後2 * 4 結合, 5 * 8結合
而後是(5 * 8)/ -2 結合,結合後的結果爲 (2 * 4) + ((5 * 8)/(-2)),此時最外層爲 +
加法運行先計算左邊的操做數,那麼 2 * 4 先進行計算 結果爲 8 + ((5 * 8)/(-2)) ,而後計算+右邊的操做數 ((5 * 8)/(-2))
它的最外層是 / , 那麼先計算操做符左邊的數 5 * 8 計算後結果爲 40 / (-2) , 而後計算40 /(-2)結果爲-20
如今計算表達式爲 8 + (-20) 最終的結果爲 -16數據類型
算術運算的注意點float
1.自動類型轉換
int a = 10.6;
int b = 10.5 + 1.7;
2.自動將大類型轉換爲了小類型,會丟失精度
自動類型提高
int b = 10.5 + 10;
3.將右邊的10提高爲了double類型
double b = 1.0 / 2;
解決除法的精度問題
4.強制類型轉換
double a = (double)1 / 2;
double b = (double)(1 / 2);im
自動類型提高
相同數據類型的值才能進行運算(好比加法運算),並且運算結果依然是同一種數據類型。系統會自動對佔用內存較少的類型作一個「自動類型提高」的操做
常見的自動類型提高
float a = 10 + 3.45f;// int 提高爲 float
int b = 'A' + 32; // char 提高爲 int
double c = 10.3f + 5.7; // float 提高爲 double數據