日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > C++(二):運算符與表達式

C++(二):運算符與表達式

來源:程序員人生   發布時間:2014-11-14 08:15:46 閱讀次數:3510次

C++的運算符

C++的運算符10分豐富,使得C++的運算10分靈活方便。例如把賦值號(=)也作為運算符處理,這樣,a=b=c=4就是合法的表達式,這是與其他語言不同的。C++提供了以下運算符:

  1. 算術運算符
    +(加)  -(減)  *(乘)  /(除)  %(整除求余)  ++(自加)  --(自減)
  2. 關系運算符
    >(大于)  <(小于)   ==(等于)  >=(大于或等于)  <=(小于或等于)  !=(不等于)
  3. 邏輯運算符
    &&(邏輯與)  ||(邏輯或)   !(邏輯非)
  4. 位運算符
    <<(按位左移)  >>(按位右移)  &(按位與)  |(按位或)   ^(按位異或)  ~(按位取反)
  5. 賦值運算符 (=及其擴大賦值運算符)
  6. 條件運算符 (?:)
  7. 逗號運算符 (,)
  8. 指針運算符 (*)
  9. 援用運算符和地址運算符 (&)
  10. 求字節數運算符(sizeof)
  11. 強迫類型轉換運算符( (類型) 或類型( ))
  12. 成員運算符 (.)
  13. 指向成員的運算符 (->)
  14. 下標運算符 ([ ])
  15. 其他 (如函數調用運算符())

C++算術運算符與算術表達式

基本的算術運算符

在本章中主要介紹算術運算符與算術表達式,賦值運算符與賦值表達式,逗號運算符與逗號表達式,其他運算符將在以后各章中陸續介紹。


常見算數運算符
運算符 說明 舉例
+ 加法運算符,或正值運算符 3+5,+3
- 減法運算符,或負值運算符 5⑵,⑶
* 乘法運算符 3*5
/ 除法運算符 5/3
% 模運算符,或稱求余運算符 %兩側均應為整型數據,如7%4的值為3

需要說明,兩個整數相除的結果為整數,如5/3的結果值為1,舍去小數部份。但是,如果除數或被除數中有1個為負值,則舍入的方向是不固定的。例如,⑸/3在有的C++系統上得到結果⑴,有的C++系統則給出結果⑵。多數編譯系統采取“向零取整”的方法,即5/3的值等于1,⑸/3的值等于⑴,取整后向零靠攏。

如果參加+,  -,  *, / 運算的兩個數中有1個數為float型數據,則運算的結果是double型,由于C++在運算時對所有float型數據都按double型數據處理。

算術表達式和運算符的優先級與結合性

用算術運算符和括號將運算對象(也稱操作數)連接起來的、符合C++語法規則的式子,稱C++算術表達式。運算對象包括常量、變量、函數等。例如,下面是1個合法的C++算術表達式:
    a*b/c⑴.5+'a'

C++語言規定了運算符的優先級和結合性。在求解表達式時,先按運算符的優先級別高低次序履行,例如先乘除后加減。如有表達式a-b*c,b的左邊為減號,右邊為乘號,而乘號優先于減號,因此,相當于a-(b*c)。如果在1個運算對象兩側的運算符的優先級別相同,如a-b+c,則按規定的“結合方向”處理。

C++規定了各種運算符的結合方向(結合性),算術運算符的結合方向為“自左至右”,即先左后右,因此b先與減號結合,履行a-b的運算,再履行加c的運算。“自左至右的結合方向”又稱“左結合性”,即運算對象先與左面的運算符結合。以后可以看到有些運算符的結合方向為“自右至左”,即右結合性(例如賦值運算符)。關于“結合性”的概念在其他1些高級語言中是沒有的,是C和C++的特點之1,希望能弄清楚。

C++所有運算符和它們的優先級別和結合性請查看這里:C++運算符優先級表

表達式中各類數值型數據間的混合運算

在表達式中常遇到不同類型數據之間進行運算,如:
    10+'a'+1.5⑻765.1234*'b'
在進行運算時,不同類型的數據要先轉換成同1類型,然落后行運算。轉換的規則按圖2.7所示。


圖2.7

假定已指定i為整型變量,f為float變量,d為double型變量,e為long型,有下面表達式:
    10+'a'+i*f-d/e
運算次序為:
  1. 進行10+'a'的運算,先將'a'轉換成整數97,運算結果為107。
  2. 進行i*f的運算。先將i與f都轉換成double型,運算結果為double型。
  3. 整數107與i*f的積相加。先將整數107轉換成雙精度數(小數點后加若干個0,即107.000…00),結果為double型。
  4. 將變量e轉換成double型,d/e結果為double型。
  5. 將10+'a'+i*f的結果與d/e的商相減,結果為double型。
上述的類型轉換是由系統自動進行的。

C++自增和自減運算符(--和++)

在C和C++中,常在表達式中使用自增(++)和自減(--)運算符,他們的作用是使變量的值增1或減1,如:
++i(在使用i之前,先使i的值加1,如果i的原值為3,則履行j=++i后,j的值為4)
--i (在使用i之前,先使i的值減1,如果i的原值為3,則履行j=--i后,j的值為2)
i++ (在使用i以后,使i的值加1,如果i的原值為3,則履行j=i++后,j的值為3,然后i變成4)
i--(在使用i以后,使i的值減1,如果i的原值為3,則履行j=i--后,j的值為3,然后i變成2)
++i是先履行i=i+1后,再使用i的值;而i++是先使用i的值后,再履行i=i+1。

正確地使用++和--,可使程序簡潔?清晰?高效。請注意:
  1. 自增運算符(++)和自減運算符(--)只能用于變量,而不能用于常量或表達式。
  2. ++和--的結合方向是“自右至左”。
  3. 自增運算符(++)和自減運算符(--)使用10分靈活,但在很多情況下可能出現歧義性,產生“意想不到”的副作用。
  4. 自增(減)運算符在C++程序中是常常見到的,經常使用于循環語句中,使循環變量自動加1。也用于指針變量,使指針指向下1個地址。

C++強迫類型轉換

在表達式中不同類型的數據會自動地轉換類型,以進行運算。有時程序編制者還可以利用強迫類型轉換運算符將1個表達式轉換成所需類型。例如:
    (double)a  (將a轉換成double類型)
    (int)(x+y)   (將x+y的值轉換成整型)
    (float)(5%3)  (將5%3的值轉換成float型)

強迫類型轉換的1般情勢為:
    (類型名)(表達式)

注意:如果要進行強迫類型轉換的對象是1個變量,該變量可以不用括號括起來。如果要進行強迫類型轉換的對象是1個包括多項的表達式,則表達式應當用括號括起來。如果寫成
    (int)x+y
則只將x轉換成整型,然后與y相加。

以上強迫類型轉換的情勢是原來C語言使用的情勢,C++把它保存了下來,以利于兼容。C++還增加了以下情勢:
    類型名(表達式)

    int(x)

    int(x+y)

類型名不加括號,而變量或表達式用括號括起來。這類情勢類似于函數調用。但許多人仍習慣于用第1種情勢,把類型名包在括號內,這樣比較清楚。

需要說明的是在強迫類型轉換時,得到1個所需類型的中間變量,但原來變量的類型未產生變化。例如:
    (int)x
如果x原指定為float型,值為3.6,進行強迫類型運算后得到1個int型的中間變量,它的值等于3,而x原來的類型和值都不變。

【例2.4】強迫類型轉換。

#include <iostream> using namespace std; int main( ) { float x; int i; x=3.6; i=(int)x; cout<<"x="<<x<<",i="<< i<<endl; return 0; }
運行結果以下:
   x=3.6,i=3
x的型仍為float型,值仍等于3.6。

由上可知,有兩種類型轉換,1種是在運算時沒必要用戶指定,系統自動進行的類型轉換,如3+6.5。第2種是強迫類型轉換。當自動類型轉換不能實現目的時,可以用強迫類型轉換。另外,在函數調用時,有時為了使實參與形參類型1致,可以用強迫類型轉換運算符得到1個所需類型的參數。

C++賦值運算符與賦值表達式

賦值運算符

賦值符號“=”就是賦值運算符,它的作用是將1個數據賦給1個變量。如“a=3”的作用是履行1次賦值操作(或稱賦值運算)。把常量3賦給變量a。也能夠將1個表達式的值賦給1個變量。

賦值進程中的類型轉換

如果賦值運算符兩側的類型不1致,但都是數值型或字符型時,在賦值時會自動進行類型轉換。

1)  將浮點型數據(包括單、雙精度)賦給整型變量時,舍棄其小數部份。

2)  將整型數據賦給浮點型變量時,數值不變,但以指數情勢存儲到變量中。

3) 將1個double型數據賦給float變量時,要注意數值范圍不能溢出。

4)  字符型數據賦給整型變量,將字符的ASCII碼賦給整型變量。

5) 將1個int、short或long型數據賦給1個char型變量,只將其低8位原封不動地送到char型變量(產生截斷)。例如
   short int i=289;
   char c;
   c=i; //將1個int型數據賦給1個char型變量
賦值情況見圖2.8。為方便起見,以1個int型數據占兩個字節(16位)的情況來講明。


圖2.8

6) 將signed(有符號)型數據賦給長度相同的unsigned(無符號)型變量,將存儲單元內容原樣照搬(連原本的符號位也作為數值1起傳送)。

<
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 精品国产aⅴ麻豆 | 一级黄色毛片视频 | 国产精品黄在线观看 | 综合av第一页 | 高清国产一区二区 | av大片在线观看 | 日韩高清在线免费观看 | 久久久精品国产 | 日韩福利视频 | 国产精品免费一区二区三区 | 999免费观看视频 | 成人在线一区二区 | 国产精品视频一区二区三区不卡 | 日韩在线视频一区 | 在线播放一区二区三区 | 国产精品久久久久久久岛一牛影视 | 欧美一区二区三区四区五区 | 黄色片网站 | 国产伦精品一区二区三区视频金莲 | 国产精品久久久 | 91精品国产欧美一区二区 | 久久久久久久夜 | 久久国产精品免费 | 国产污视频在线 | 亚洲专区免费 | 日韩视频在线一区 | 亚洲免费大片 | 神马久久精品 | 在线观看成人小视频 | 欧美在线一级 | 欧美日韩国产中文字幕 | 欧美 日韩 综合 | 黑人一区二区 | 717影视三级理论电影在线 | 成人性生活大片免费看一 | 欧美成人免费在线视频 | 香蕉视频啊啊啊 | 久久久久久精 | 天堂在线免费观看 | 国产一区欧美一区 | 99精品视频免费在线观看 |