在本章中主要介紹算術運算子與算術表示式,賦值運算子與賦值表示式,逗號運算子與逗號表示式,其他運算子將在以後各章中陸續介紹。
常見算數運算子
運算子說明舉例
+加法運算子,或正值運算子
3+5,+3
-減法運算子,或負值運算子
5-2,-3
*乘法運算子
3*5/
除法運算子
5/3%
模運算子,或稱求餘運算子
%兩側均應為整型資料,如7%4的值為3
需要說明,兩個整數相除的結果為整數,如5/3的結果值為1,捨去小數部分。但是,如果除數或被除數中有乙個為負值,則捨入的方向是不固定的。例如,-5/3在有的c++系統上得到結果-1,有的c++系統則給出結果-2。多數編譯系統採取「向零取整」的方法,即5/3的值等於1,-5/3的值等於-1,取整後向零靠攏。
如果參加+, -, *, / 運算的兩個數中有乙個數為float型資料,則運算的結果是double型,因為c++在運算時對所有float型資料都按double型資料處理。
用算術運算子和括號將運算物件(也稱運算元)連線起來的、符合c++語法規則的式子,稱c++算術表示式。運算物件包括常量、變數、函式等。例如,下面是乙個合法的c++算術表示式:
a*b/c-1.5+』a』
c++語言規定了運算子的優先順序和結合性。在求解表示式時,先按運算子的優先級別高低次序執行,例如先乘除後加減。如有表示式a-b*c,b的左側為減號,右側為乘號,而乘號優先於減號,因此,相當於a-(b*c)。如果在乙個運算物件兩側的運算子的優先級別相同,如a-b+c,則按規定的「結合方向」處理。
c++規定了各種運算子的結合方向(結合性),算術運算子的結合方向為「自左至右」,即先左後右,因此b先與減號結合,執行a-b的運算,再執行加c的運算。「自左至右的結合方向」又稱「左結合性」,即運算物件先與左面的運算子結合。以後可以看到有些運算子的結合方向為「自右至左」,即右結合性(例如賦值運算子)。關於「結合性」的概念在其他一些高階語言中是沒有的,是c和c++的特點之一,希望能弄清楚。
c++所有運算子以及它們的優先級別和結合性請檢視這裡:c++運算子優先順序表
在表示式中常遇到不同型別資料之間進行運算,如:
10+』a』+1.5-8765.1234*』b』
在進行運算時,不同型別的資料要先轉換成同一型別,然後進行運算。轉換的規則按圖2.7所示。
圖2.7
假設已指定i為整型變數,f為float變數,d為double型變數,e為long型,有下面表示式:
10+』a』+i*f-d/e
運算次序為:
進行10+』a』的運算,先將』a』轉換成整數97,運算結果為107。
進行i*f的運算。先將i與f都轉換成double型,運算結果為double型。
整數107與i*f的積相加。先將整數107轉換成雙精度數(小數點後加若干個0,即107.000…00),結果為double型。
將變數e轉換成double型,d/e結果為double型。
將10+』a』+i*f的結果與d/e的商相減,結果為double型。
上述的型別轉換是由系統自動進行的。
算術運算子與算術表示式的例項
1 分離各位數 寫乙個程式,輸入x 三位數 輸出其個 十 百位數,用空格隔開 任務和 版本號 v1.0 問題描述 寫乙個程式,輸入x 三位數 輸出其個 十 百位數,用空格隔開 程式輸出 個 十 百位數。include include int main 執行結果 2.分離整數和小數部分 編寫乙個程式,...
C語言算術運算子和算術表示式
c語言中運算子和表示式數量之多,在高階語言中是少見的。正是豐富的運算子和表示式使c語言功能十分完善。這也是c語言的主要特點之一。c語言的運算子不僅具有不同的優先順序,而且還有乙個特點,就是它的結合性。在表示式中,各運算量參與運算的先後順序不僅要遵守運算子優先順序別的規定,還要受運算子結合性的制約,以...
C語言及程式設計 算術運算子與算術表示式
題一 分離各位數 寫乙個程式,輸入x 三位數 輸出其個 十 百位數,用空格隔開 樣例輸入 768 樣例輸出 8 6 7 include int main 題二 分離整數和小數部分 include int main 執行結果 123.456 123456題三 如何買玫瑰花 小慧過生日,小明 小明真忙 ...