官术网_书友最值得收藏!

2.7 算術運算符和算術表達式

C語言的運算符可以分為算術運算符、關系運算符、邏輯運算符、賦值運算符、條件運算符和逗號運算符6類,本節主要介紹算術運算符及其表達式,其他類型的運算符將在后面的章節中陸續介紹。

2.7.1 算術運算符

學習提示

【理解】算術運算符的優先級與結合性

算術運算符主要用于各類數值運算。本小節將從運算符的種類、優先級和結合性3個方面介紹算術運算符的特點和使用方法。

1 算術運算符的分類

按照算術運算符的性質,可以將算術運算符分為加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)7種。按照參與運算的運算數的個數,可以將算術運算符分為單目運算符和雙目運算符。算術運算符的分類如表2-4所示。

表2-4 算術運算符的分類

其中+(加法運算符)、*、/(乘、除法運算符)和%(模運算符)都是雙目運算符,即它們在參與運算時,左右各需要一個運算數。而-(減法運算符)既是雙目運算符,又是單目運行符,當作為雙目運算符時表示兩個數的差;作為單目運行符時,只需要后跟一個運算對象,表示取它的負值。自增(++)、自減(--)也是單目運算符,在后面的章節中將詳細介紹 。

說明

符號“*”表示乘法,在C語言中不能用數學中習慣的“×”或“·”號表示乘,也不能省略,如2*y不能寫作2y。

符號“/”表示除法,需要說明的是,兩個整數相除的結果為整數,如5/2結果為2,舍去小數部分。但是,如果除數或被除數中有一個為負值,則舍入的方向是“向零取整”,即5/2為2,-5/2或5/-2的結果為-2。

符號“%”表示求模運算,要求兩側的操作數均為整型數據,即兩個數相除的余數的運算結果也是整數,如“5%2”的結果為1。

2 算術運算符的優先級和結合性

C語言規定了運算符的優先級與結合性。在對表達式求值時,先按運算符的優先級別高低次序執行,如果一個運算對象兩側的運算符的優先級別相同,則按規定的“結合方向”處理。

通常,算術運算符的優先級是取負值運算符>乘除運算符>加減運算符。這里需要特別指出的是,圓括號可用來改變優先級,也就是說圓括號的運算級別最高。

例如

1+2*3的運算結果是7,(1+2)*3的運算結果是9。

圓括號的這種特性不僅適用于算術運算符,而且對其他的運算符也是適用的。所以,在使用C語言的時候,可以靈活運用圓括號來得到想要的優先級順序。

所謂結合性是指當一個操作對象兩側的運算符具有相同的優先級時,該操作對象是先與左邊的運算符結合,還是先與右邊的運算符結合。C語言中各運算符的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。

左結合性是指某一個運算對象先與左邊的運算符相結合,再將運算結果與右邊的運算符相結合。同理,我們可以知道右結合性的結合方向。

例如

表達式“x-y+z”的計算順序是:y應先與“-”號結合,執行“x-y”運算,然后再執行“+z”的運算。

例如

x=y=z ;

說明

由于“=”具有右結合性,可以先執行y=z運算,再執行x=(y=z)運算。C語言運算符中有不少具有右結合性,應注意區別,以避免理解錯誤。

請注意

結合性是C語言所獨有的概念。除單目運算符、賦值運算符和條件運算符是右結合性外,其他運算都是左結合性。

2.7.2 算術表達式

學習提示

【理解】算術運算符的優先級與結合性

用算術運算符和圓括號將運算對象(常量、變量和函數等)連接起來的符合 C語言語法規則的式子稱為算術表達式。算術表達式有3個要素,分別是運算對象(常量、變量、函數等)、圓括號和算術運算符。

一個常量、一個變量(已被賦值)都是合法的表達式,如1、0、x等。簡單的表達式還可以加上圓括號,或者與運算符進行連接構成新的表達式。

例如

-x、1+x、(-x)、(1+x)都是合法的算術表達式,(-x)*(1+x)又構成了新的表達式 。

說明

C語言表達式中的所有標識符必須寫在一行,沒有分式,也沒有上下標,如數學表達式:

需要寫成(a+b)/(c+d),這里括號是不可缺少的。如果沒有括號,實際上就變成了a+(b/c)+d。

了解了算術運算符的優先級和結合方向以后,再來分析一下表達式-x*(-y+4)/a-1的求值過程。

(1)求表達式“-x”的值。

(2)求表達式“-y”的值。

(3)求表達式“-y+4”的值。

(4)求表達式“(1)”乘“(3)”的值。

(5)求“(4)/a”的值。

(6)求“(5)-1”的值。

從這個小例子可以看出,C表達式的本質是一個值。因此,表達式可以出現在數值能夠出現的任何地方,這也意味著,如果表達式中有變量,則變量在被引用之前必須已被賦值。

真題演練

【例1】若有定義語句:int a=12;,則執行語句:a+=a-=a*a;后,a的值是( )。

A)-264  B)552  C)144  D)264

【解析】賦值運算結合性為自右向左,語句a+=a-=a*a相當于a=a-a*a,a=a+a;,自右向左計算過程為a=a-a*a=-132,a=a+a=-264,選項A正確。

【答案】A

【例2】有C語言表達式2*3+4+15%3,關于其執行順序,以下敘述中正確的是( )。

A)先執行2*3得6,再執行6+4得10,再執行15%3得0,最后執行10+0得10

B)先執行2*3得6,再執行15%3得5,最后執行6+4+5得15

C)先執行15%3得0,再執行2*3得6,最后執行6+4+0得10

D)先執行15%3得3,再執行4+3得7,再執行2*3得6,最后執行6+7得13

【解析】運算符“*”和運算符“%”有相同優先級,并且優先級都高于運算符“+”,再根據運算結合性,乘法和取余運算都滿足從左到右的運算規則,故選項C、D錯誤;因為15%3=0,故排除選項B,答案為選項A。

【答案】A

推薦閱讀
  1. 全國計算機等級考試一本通:二級Access
  2. 2020年3月全國計算機等級考試《一級計算機基礎及MS Office應用》復習全書【核心講義+歷年真題詳解】
  3. 2020年3月全國計算機等級考試《一級計算機基礎及Photoshop應用》專用教材【考綱分析+考點精講+真題演練+強化習題】
  4. 全國計算機等級考試歷年真題與機考題庫:二級MS Office高級應用
  5. 數據結構搶分攻略:真題分類分級詳解
  6. 全國職稱計算機考試標準教材與專用題庫:Excel 2007中文電子表格
  7. 2020年3月全國計算機等級考試《四級軟件工程》復習全書【核心講義+歷年真題詳解】
  8. 2020年3月全國計算機等級考試《四級數據庫原理》復習全書【核心講義+歷年真題詳解】
  9. 2014年全國計算機等級考試3年真題精解與過關全真訓練題:二級公共基礎知識
  10. 黑光造型:創意造型設計佳作賞析
  11. 5天通過職稱計算機考試(考點視頻串講+全真模擬):Excel 2003中文電子表格(第2版) (全國專業技術人員計算機應用能力考試指導叢書)
  12. 5天通過職稱計算機考試(考點視頻串講+全真模擬):PowerPoint 2003中文演示文稿(第2版) (全國專業技術人員計算機應用能力考試指導叢書)
  13. 全國計算機等級考試《二級C語言程序設計》【教材精講+真題解析】講義與視頻課程【45小時高清視頻】
  14. 5天通過職稱計算機考試(考點視頻串講+全真模擬):Word 2003中文字處理(第2版) (全國專業技術人員計算機應用能力考試指導叢書)
  15. 軟件設計師考前突破:考點精講、真題精解、難點精練
主站蜘蛛池模板: 滕州市| 雅安市| 赫章县| 安溪县| 天台县| 赞皇县| 三明市| 高雄县| 厦门市| 广东省| 微山县| 金昌市| 呼玛县| 江孜县| 乐东| 仪陇县| 襄垣县| 饶平县| 囊谦县| 文昌市| 新化县| 新绛县| 崇明县| 巫溪县| 姚安县| 天台县| 曲阳县| 蒲城县| 富源县| 青铜峡市| 阿巴嘎旗| 普兰县| 松潘县| 丰县| 杭锦后旗| 滨海县| 河间市| 安徽省| 桐庐县| 卓尼县| 陈巴尔虎旗|