最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++之Primer算術(shù)運(yùn)算符詳解

 更新時(shí)間:2025年03月19日 09:03:43   作者:c-c-developer  
這篇文章主要介紹了C++之Primer算術(shù)運(yùn)算符方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

算術(shù)運(yùn)算符

表算術(shù)運(yùn)算符(左結(jié)合律)

運(yùn)算符功能用法
一元正號(hào)+ expr
一元負(fù)號(hào)- expr
*乘法expr * expr
/除法expr / expr
%求余expr % expr
+加法expr + expr
減法expr - expr

表按照運(yùn)算符的優(yōu)先級(jí)將其分組。一元運(yùn)算符的優(yōu)先級(jí)最高,接下來(lái)是乘法和除法,優(yōu)先級(jí)最低的是加法和減法。優(yōu)先級(jí)高的運(yùn)算符比優(yōu)先級(jí)低的運(yùn)算符組合得更緊密。上面的所有運(yùn)算符都滿(mǎn)足左結(jié)合律,意味著當(dāng)優(yōu)先級(jí)相同時(shí)按照從左向右的順序進(jìn)行組合。

除非另做特殊說(shuō)明,算術(shù)運(yùn)算符都能作用于任意算術(shù)類(lèi)型以及任意能轉(zhuǎn)換為算術(shù)類(lèi)型的類(lèi)型。算術(shù)運(yùn)算符的運(yùn)算對(duì)象和求值結(jié)果都是右值。在表達(dá)式求值之前,小整數(shù)類(lèi)型的運(yùn)算對(duì)象被提升成較大的整數(shù)類(lèi)型,所有運(yùn)算對(duì)象最終會(huì)轉(zhuǎn)換成同一類(lèi)型。

一元正號(hào)運(yùn)算符、加法運(yùn)算符和減法運(yùn)算符都能作用于指針。己經(jīng)介紹過(guò)二元加法和減法運(yùn)算符作用于指針的情況。當(dāng)一元正號(hào)運(yùn)算符作用于一個(gè)指針或者算術(shù)值時(shí),返回運(yùn)算對(duì)象值的一個(gè)(提升后的)副本。

一元負(fù)號(hào)運(yùn)算符對(duì)運(yùn)算對(duì)象值取負(fù)后

返回其(提升后的)副本:

int i = 1024;
int k = -i; //k是-1024
bool b= true;
bool b2 = -b; //b2是true

布爾值不應(yīng)該參與運(yùn)算,-b就是一個(gè)很好的例子。

對(duì)大多數(shù)運(yùn)算符來(lái)說(shuō),布爾類(lèi)型的運(yùn)算對(duì)象將被提升為int類(lèi)型。如上所示,布爾變量b的值為真,參與運(yùn)算時(shí)將被提升成整數(shù)值1,對(duì)它求負(fù)后的結(jié)果是-1。將-1再轉(zhuǎn)換回布爾值并將其作為b2的初始值,顯然這個(gè)初始值不等于0,轉(zhuǎn)換成布爾值后應(yīng)該為1。所以,b2的值是真!

提示:溢出和其他算術(shù)運(yùn)算異常

  • 算術(shù)表達(dá)式有可能產(chǎn)生未定義的結(jié)果。一部分原固是數(shù)學(xué)性質(zhì)本身:例如除數(shù)是0的情況;另外一部分則源于計(jì)算機(jī)的特點(diǎn):例如溢出,當(dāng)計(jì)算的結(jié)樞超出試類(lèi)型所能表示的范國(guó)時(shí)就會(huì)產(chǎn)生溢出。
  • 假設(shè)某個(gè)機(jī)器的short類(lèi)型占16位,則最大的shot敏值是32767。在這樣一臺(tái)機(jī)器上,下面的復(fù)合賦值語(yǔ)句將產(chǎn)生溢出:
short short_value=32767; //如果short類(lèi)型占16位,則能表示的最大值是 32767
short_value+=1; //該計(jì)算導(dǎo)致溢出
cout << “short_value:“ <<short_value<<endl;

給short_value賦值的語(yǔ)句是未定義的,這是因?yàn)楸硎疽粋€(gè)帶符號(hào)數(shù)32768需要17位,但是short類(lèi)型只有16位。很多系統(tǒng)在編譯和運(yùn)行時(shí)都不報(bào)溢出錯(cuò)誤;像其他未定義的行為一樣,溢出的結(jié)果是不可預(yù)知的。

在我們的系統(tǒng)中,程序的輸出結(jié)果是

  • short_value : -32768
  • 該值發(fā)生了“環(huán)繞(wrapped around),符號(hào)位本來(lái)是0,由于溢出被故成了1,于是結(jié)果變成一個(gè)負(fù)值。在別的系統(tǒng)中也許會(huì)有其他結(jié)果,程序的行為可能不同甚至直接崩潰。

當(dāng)作用于算術(shù)類(lèi)型的對(duì)象時(shí),算術(shù)運(yùn)算符+、~、*、/的含義分別是加法、減法、乘法和除法。整數(shù)相除結(jié)果還是整數(shù),也就是說(shuō),如果商含有小數(shù)部分,直接棄除:

int ival = 21/6;//ival1是3,結(jié)果進(jìn)行了刪節(jié),余數(shù)被拋棄掉了
int ival2 = 21/7;// ival2是3,沒(méi)有余數(shù),結(jié)果是整數(shù)值

運(yùn)算符%俗稱(chēng)“取余“或“取模“運(yùn)算符,負(fù)責(zé)計(jì)算兩個(gè)整數(shù)相除所得的余數(shù),參與取余運(yùn)算的運(yùn)算對(duì)象必須是整數(shù)類(lèi)型:

int ival = 42;
double dval=3.14;
ival % 12; //正確:結(jié)果是6
ival % dval;//錯(cuò)誤:運(yùn)算對(duì)象是浮點(diǎn)類(lèi)型

在除法運(yùn)算中,如果兩個(gè)運(yùn)算對(duì)象的符號(hào)相同則商為正(如果不為0的話(huà)),否則商為負(fù)。C++語(yǔ)言的早期版本允許結(jié)果為負(fù)值的商向上或向下取整,C++11新標(biāo)準(zhǔn)則規(guī)定商一律向0取整(即直接切除小數(shù)部分)。

根據(jù)取余運(yùn)算的定義,如果m和n是整數(shù)且n非0,則表達(dá)式(m/n)*n+m%n 的求值結(jié)果與m相等。隱含的意思是,如果m%n不等于0,則它的符號(hào)和m相同。C++語(yǔ)言的早期版本允許m%n的符號(hào)匹配n的符號(hào),而且商向負(fù)無(wú)窮一側(cè)取整,這一方式在新標(biāo)準(zhǔn)中已經(jīng)被禁止使用了。除了-m導(dǎo)致溢出的特殊情況,其他時(shí)候(-m)/n和m/(-n)都等于-(m/n),m%(-n)等于m%n,(-m)%n等于-(m%n)。

具體示例如下:

int ivall
int ival2

21%6;    /*結(jié)果是3*/  21/6;      /*結(jié)果是3*/
21%7;    /*結(jié)果是0*/  21/7;      /*結(jié)果是3*/
-21%-8;  /*結(jié)果是-5*/ -21/-8;    /*結(jié)果是2*/
21%-5;   /*結(jié)果是1 */ 21/5;      /*結(jié)果是-4*/

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

红安县| 松潘县| 嘉黎县| 新密市| 唐河县| 十堰市| 浙江省| 屏边| 乃东县| 武汉市| 微博| 沾益县| 菏泽市| 高台县| 茶陵县| 中西区| 宁安市| 丹棱县| 昭苏县| 敦化市| 通海县| 陆川县| 墨竹工卡县| 汉阴县| 武强县| 洪洞县| 涿州市| 瓦房店市| 岳池县| 子长县| 西吉县| 木里| 伊通| 成安县| 措勤县| 南江县| 栖霞市| 陵川县| 朔州市| 莱州市| 馆陶县|