多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 互聯(lián)網(wǎng) > C++(二):運(yùn)算符與表達(dá)式

C++(二):運(yùn)算符與表達(dá)式

來源:程序員人生   發(fā)布時間:2014-11-14 08:15:46 閱讀次數(shù):3498次

C++的運(yùn)算符

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

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

C++算術(shù)運(yùn)算符與算術(shù)表達(dá)式

基本的算術(shù)運(yùn)算符

在本章中主要介紹算術(shù)運(yùn)算符與算術(shù)表達(dá)式,賦值運(yùn)算符與賦值表達(dá)式,逗號運(yùn)算符與逗號表達(dá)式,其他運(yùn)算符將在以后各章中陸續(xù)介紹。


常見算數(shù)運(yùn)算符
運(yùn)算符 說明 舉例
+ 加法運(yùn)算符,或正值運(yùn)算符 3+5,+3
- 減法運(yùn)算符,或負(fù)值運(yùn)算符 5⑵,⑶
* 乘法運(yùn)算符 3*5
/ 除法運(yùn)算符 5/3
% 模運(yùn)算符,或稱求余運(yùn)算符 %兩側(cè)均應(yīng)為整型數(shù)據(jù),如7%4的值為3

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

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

算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性

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

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

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

C++所有運(yùn)算符和它們的優(yōu)先級別和結(jié)合性請查看這里:C++運(yùn)算符優(yōu)先級表

表達(dá)式中各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算

在表達(dá)式中常遇到不同類型數(shù)據(jù)之間進(jìn)行運(yùn)算,如:
    10+'a'+1.5⑻765.1234*'b'
在進(jìn)行運(yùn)算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同1類型,然落后行運(yùn)算。轉(zhuǎn)換的規(guī)則按圖2.7所示。


圖2.7

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

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

在C和C++中,常在表達(dá)式中使用自增(++)和自減(--)運(yùn)算符,他們的作用是使變量的值增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. 自增運(yùn)算符(++)和自減運(yùn)算符(--)只能用于變量,而不能用于常量或表達(dá)式。
  2. ++和--的結(jié)合方向是“自右至左”。
  3. 自增運(yùn)算符(++)和自減運(yùn)算符(--)使用10分靈活,但在很多情況下可能出現(xiàn)歧義性,產(chǎn)生“意想不到”的副作用。
  4. 自增(減)運(yùn)算符在C++程序中是常常見到的,經(jīng)常使用于循環(huán)語句中,使循環(huán)變量自動加1。也用于指針變量,使指針指向下1個地址。

C++強(qiáng)迫類型轉(zhuǎn)換

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

強(qiáng)迫類型轉(zhuǎn)換的1般情勢為:
    (類型名)(表達(dá)式)

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

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

    int(x)

    int(x+y)

類型名不加括號,而變量或表達(dá)式用括號括起來。這類情勢類似于函數(shù)調(diào)用。但許多人仍習(xí)慣于用第1種情勢,把類型名包在括號內(nèi),這樣比較清楚。

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

【例2.4】強(qiáng)迫類型轉(zhuǎn)換。

#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; }
運(yùn)行結(jié)果以下:
   x=3.6,i=3
x的型仍為float型,值仍等于3.6。

由上可知,有兩種類型轉(zhuǎn)換,1種是在運(yùn)算時沒必要用戶指定,系統(tǒng)自動進(jìn)行的類型轉(zhuǎn)換,如3+6.5。第2種是強(qiáng)迫類型轉(zhuǎn)換。當(dāng)自動類型轉(zhuǎn)換不能實現(xiàn)目的時,可以用強(qiáng)迫類型轉(zhuǎn)換。另外,在函數(shù)調(diào)用時,有時為了使實參與形參類型1致,可以用強(qiáng)迫類型轉(zhuǎn)換運(yùn)算符得到1個所需類型的參數(shù)。

C++賦值運(yùn)算符與賦值表達(dá)式

賦值運(yùn)算符

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

賦值進(jìn)程中的類型轉(zhuǎn)換

如果賦值運(yùn)算符兩側(cè)的類型不1致,但都是數(shù)值型或字符型時,在賦值時會自動進(jìn)行類型轉(zhuǎn)換。

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

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

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

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

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


圖2.8

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

<
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产精品一区二区三 | 国产亚洲欧洲国产综合一区 | 欧美三级手机在线 | 免费片子 | 成人在线一区二区 | 五月丁香六月综合缴清无码 | 欧美日韩精品免费一区二区三区 | 国产小情侣激情小视频免费看 | 日本理论免费高清在线视频 | 中文字幕免费在线视频 | 性欧美黑人| 欧美精品高清在线观看 | 国产精品18久久久久网站 | 国产精品久久1024 | a大片大片网y | 日韩美女影院 | 最近新中文字幕大全高清视频 | 国产女人视频免费观看 | 成人精品视频一区二区在线 | 中文字幕38页 | 欧美视频在线观看视频 | 日韩理论片在线看免费观看 | 国产69精品久久久久999 | 欧美又粗又硬又黄又爽视频 | 在线观看日本永久免费视频 | 永久看片| 亚洲精品www久久久久久久软件 | 欧美日本道免费一区二区三区 | 久久生活片 | 欧美激情在线播放一区二区三区 | www片| 亚洲精品在线不卡 | 成年视频国产免费观看 | 亚洲第一成年网 | 精品三级内地国产在线观看 | 香港aa三级久久三级不卡 | 日韩欧国产精品一区综合无码 | 亚洲精品高清视频 | 欧美性受xxxx黑人 | 精品的一区二区三区 | 亚洲美女又黄又爽在线观看 |