小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

unsigned 和 int的計(jì)算

 woada 2011-01-04

unsigned 和 int的計(jì)算

有符號數(shù)和無符號數(shù)在一起運(yùn)算,不要以為遵循的仍然是短的向長的靠齊。以前我們知道,如果一個short和一個int在一起運(yùn)算,首先編譯器會將short自動轉(zhuǎn)換為一個int類型中間變量,然后進(jìn)行運(yùn)算。但是有符號數(shù)和無符號數(shù)在一起運(yùn)算的話,并不是這樣。借此機(jī)會,串下整形數(shù)據(jù)轉(zhuǎn)換的相關(guān)知識。

       首先說說符號數(shù)和無符號數(shù)之間的轉(zhuǎn)換。無符號數(shù)可以轉(zhuǎn)換為有符號數(shù),有符號數(shù)也可以轉(zhuǎn)化為無符號整形,這之間的轉(zhuǎn)換一般編譯器也不會給出警告,因?yàn)檫@種轉(zhuǎn)換不涉及到bit丟失的情況,內(nèi)存內(nèi)容不會發(fā)生任何改變。僅僅是對這塊內(nèi)存的解釋不一樣而已。

       例如: int a = -3;

                 unsigned int b= a; // b= 65533

反之一樣。

編譯器里面有標(biāo)準(zhǔn)的轉(zhuǎn)換,這個是在整形運(yùn)算的時候出現(xiàn)。標(biāo)準(zhǔn)轉(zhuǎn)換的規(guī)則是:短的的向長的轉(zhuǎn);有符號的向無符號的轉(zhuǎn)。如果被轉(zhuǎn)換的數(shù)據(jù)比轉(zhuǎn)換后的數(shù)據(jù)要長的話,轉(zhuǎn)換可能會丟失bit數(shù)據(jù)。通常,編譯器會給出警告。

無符號數(shù)據(jù)和有符號整數(shù)進(jìn)行運(yùn)算,是有符號整數(shù)向無符號整數(shù)靠齊。這里,我們可以總結(jié)一條規(guī)則:整形數(shù)運(yùn)算,總是遵循一個原則:小的往大的擴(kuò)展。

從小到達(dá):short -> unsigned short -> int -> unsigned int

之所以這里有符號數(shù)類型長度比無符號數(shù)類型長度小,區(qū)別在于最高位使用與否。下面看看幾個例子:

eg1:

       int a=-6;

       unsigned int b = 3;

       typeid(a+b)-----------------------unsigned int   a+b結(jié)果:為一個很大的整數(shù)

       潛在:int --> unsigned int

eg2:

       unsigned short s1 = 3;

       int i2= -5;

       typeid(s1+i2) ----------------------int   a+b結(jié)果:-2

潛在:unsigned short--> int

       eg3:

              unsigned int s1 = 3;

              long i2= -5;

       typeid(s1+i2) ---------------------unsigned int   a+b結(jié)果:很大的正整數(shù)

潛在: long--> unsigned int

其它的如此類推

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多