青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer

天行健,君子以自強(qiáng)不息; 地勢坤,君子以厚德載物

隱式類型轉(zhuǎn)換&& 負(fù)數(shù)的補(bǔ)碼

   偶然看到一道C++面試題:
void foo(void)
       
{
            unsigned 
int a = 6;
            
int b = -20;
            (a
+b>6)?puts(">6"):puts("<=6");//puts為打印函數(shù)
       }

   問輸出是什么?答案是輸出 >6。
   這道題主要考察兩個東西。
   1.隱式類型轉(zhuǎn)換:int型變量轉(zhuǎn)化成unsigned int, b成了正數(shù).
   2.負(fù)數(shù)的補(bǔ)碼:計(jì)算機(jī)系統(tǒng)中的數(shù)值是以補(bǔ)碼形式表示(存儲)的。

一、C++隱式類型轉(zhuǎn)換

   C++定義了一組內(nèi)置的類型對象之間的標(biāo)準(zhǔn)轉(zhuǎn)換,在必要時它們被編譯器隱式的應(yīng)用到對象上。在算式轉(zhuǎn)換保證了二元操作符,如加法或乘法的兩個操作數(shù)被提升為共同的類型,然后再用它表示結(jié)果的類型。兩個通用的指導(dǎo)原則如下:
    1、為防止精度損失,如果必要的話,類型總是被提升為較寬的類型。
    2、所有含有小于整形的有序類型的算術(shù)表達(dá)式在計(jì)算之前其類型都會被轉(zhuǎn)換成整形。
    規(guī)則的定義如上面所述,這些規(guī)則定義了一個類型轉(zhuǎn)換層次結(jié)構(gòu),我們從最寬的類型long double 開始,那么另一個操作數(shù)無論是什么類型都將被轉(zhuǎn)換成long double .如果兩個操作數(shù)千不是long double 型,那么若其中一個操作數(shù)的類型是double 型,則另一個就被轉(zhuǎn)換成double 型。例如:

     int ival;
     
float fval;
     
double dval;
     dval 
+ fval + ival //在計(jì)算加法前fval和ival都被轉(zhuǎn)換成double

     類似地,如果兩個操作數(shù)都不是double型而其中一個操作float型 ,則另一個被轉(zhuǎn)換成float型。例如:

     char cval;
     
int ival;
     
float fval;
     cval 
+ ival + fval //在計(jì)算加法前ival和cval都被轉(zhuǎn)換成float

    否則如果兩個操作數(shù)都不是3種浮點(diǎn)類型之一,它們一定是某種整值類型。在確定共同的目標(biāo)提升類型之前,編譯器將在所有小于int 的整值類型上施加一個被稱為整值提升的過程。
    在進(jìn)行整值提升時類型char、signed char、unsigned char和short int 都被提升為類型int 。如果機(jī)器上的類型空間足夠表示所有unsigned short 型的值,這通常發(fā)生在short用半個字而int 用一個字表示的情況下,則unsigned short int 也被轉(zhuǎn)換成int 否則它會被提升為unsigned int 。wchar_t和枚舉類型被提升為能夠表示其底層類型所有值的最小整數(shù)類型。在下列表達(dá)式中:

     char cval;
     
bool found;
     
enum mumber{m1,m2,m3}mval;
     unsigned 
long ulong;
     cval 
+ ulong;ulong + found; mval + ulong;

   在確定兩個操作數(shù)被提升的公共類型之前,cval found 和mval都被提升為int 類型。
    一旦整值提升執(zhí)行完畢,類型比較就又一次開始。如果一個操作數(shù)是unsigned long 型,則第二個也被轉(zhuǎn)換成unsigned long 型。在上面的例子中所有被加到ulong上的3個對象都被提升為unsigned long 型。如果兩個操作數(shù)類型都不是unsigned long型 而其中一個操作數(shù)是long型,則另一個也被轉(zhuǎn)換成long型。例如:

     char cval;
     
long lval;
     cval 
+ 1024 + lval; //在計(jì)算加法前cval和1024都被提升為long型。

    long類型的一般轉(zhuǎn)換有一個例外。如果一個操作數(shù)是long型而另一個是unsigned int 型,那么只有機(jī)器上的long型的長度足以容納unsigned int 的所有值時(一般來說,在32位操作系統(tǒng)中l(wèi)ong型和int 型都用一長表示,所以不滿足這里的假設(shè)條件),unsigned int 才會被轉(zhuǎn)換為long型,否則兩個操作數(shù)都被提升為unsigned long 型。若兩個操作數(shù)都不是long型而其中一個是unsigned int 型,則另一個也被轉(zhuǎn)換成unsigned int 型,否則兩個操作數(shù)一定都是int 型。
   一般來說各種類型的長度關(guān)系為 long double > double > float >=  int >= short > char,unsigned > signed 。
    盡管算術(shù)轉(zhuǎn)換的這些規(guī)則帶給你的困惑可能多于啟發(fā),但是一般的思想是盡可能地保留類型表達(dá)式中涉及到的值的精度。這下是通過把不同的類型提升到當(dāng)前出現(xiàn)的最寬的類型實(shí)現(xiàn)的。

二、負(fù)數(shù)的補(bǔ)碼

   在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來表示(存儲)。 
   主要原因:使用補(bǔ)碼,可以將符號位和其它位統(tǒng)一處理;同時,減法也可按加法來處理。另外,兩個用補(bǔ)碼表示的數(shù)相加時,如果最高位(符號位)有進(jìn)位,則進(jìn)位被舍棄。 
   補(bǔ)碼與原碼的轉(zhuǎn)換過程幾乎是相同的。 
   數(shù)值的補(bǔ)碼表示也分兩種情況:
(1)正數(shù)的補(bǔ)碼:與原碼相同。 
   例如,+9的補(bǔ)碼是00001001。
(2)負(fù)數(shù)的補(bǔ)碼:符號位為1,其余位為該數(shù)絕對值的原碼按位取反;然后整個數(shù)加1。 
   例如,-7的補(bǔ)碼:因?yàn)槭秦?fù)數(shù),則符號位為“1”,整個為10000111;其余7位為-7的絕對值+7的原碼0000111按位取反為1111000;再加1,所以-7的補(bǔ)碼是11111001。 
   已知一個數(shù)的補(bǔ)碼,求原碼的操作分兩種情況:
(1)如果補(bǔ)碼的符號位為“0”,表示是一個正數(shù),所以補(bǔ)碼就是該數(shù)的原碼。
(2)如果補(bǔ)碼的符號位為“1”,表示是一個負(fù)數(shù),求原碼的操作可以是:符號位為1,其余各位取反,然后再整個數(shù)加1。 
   例如,已知一個補(bǔ)碼為11111001,則原碼是10000111(-7):因?yàn)榉栁粸?#8220;1”,表示是一個負(fù)數(shù),所以該位不變,仍為“1”;其余7位1111001取反后為0000110;再加1,所以是10000111。

posted on 2009-07-16 15:01 Saga 閱讀(2558) 評論(0)  編輯 收藏 引用 所屬分類: C/C++


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導(dǎo)航

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統(tǒng)計(jì)

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久久一区二区三区| 久久久青草青青国产亚洲免观| 欧美国产一区二区在线观看| 久久久99爱| 亚洲高清成人| 欧美激情国产日韩| 欧美激情欧美狂野欧美精品| 99视频在线观看一区三区| 日韩视频专区| 国产精品羞羞答答xxdd| 久久久999精品| 久久久久网址| 99精品国产在热久久下载| 日韩亚洲欧美成人一区| 国产精品网站在线播放| 久久久亚洲精品一区二区三区| 久久久久网站| 一本大道久久a久久精二百| 这里只有精品视频| 国产一区二区主播在线| 亚洲国产99| 欧美日韩在线观看一区二区三区| 午夜欧美精品| 久久综合九色99| 亚洲尤物视频在线| 久久精品在线播放| 在线亚洲免费| 久久久久久久精| 亚洲影音一区| 久久在线免费视频| 亚洲欧美资源在线| 美日韩精品视频免费看| 亚洲淫性视频| 欧美成人性网| 久久精品毛片| 欧美无乱码久久久免费午夜一区| 久久精品123| 欧美日韩亚洲视频一区| 美日韩精品免费| 国产精品一区三区| 亚洲国产黄色| 黄色一区二区三区| 亚洲一区二区三区午夜| 亚洲美女黄网| 久久露脸国产精品| 久久国产精品久久久久久| 欧美精品自拍| 欧美gay视频| 国产中文一区二区| 亚洲在线国产日韩欧美| 日韩午夜电影av| 噜噜噜躁狠狠躁狠狠精品视频| 欧美在线观看www| 国产精品高潮视频| 日韩视频一区二区在线观看| 亚洲第一网站| 久久久久一区二区三区| 久久久久久久精| 国产精品网站在线播放| 亚洲无玛一区| 亚洲欧美日韩电影| 欧美日韩午夜在线视频| 亚洲精品国产精品国自产在线 | 亚洲精品免费一区二区三区| 国语精品一区| 久久精品国产91精品亚洲| 欧美综合二区| 国产日韩欧美在线播放不卡| 亚洲一区二区精品在线| 亚洲中字黄色| 国产精品久久一卡二卡| 亚洲线精品一区二区三区八戒| 亚洲先锋成人| 国产精品久久亚洲7777| 亚洲欧美另类中文字幕| 久久亚洲电影| 在线精品亚洲一区二区| 欧美ed2k| 日韩午夜在线视频| 午夜国产精品视频免费体验区| 国产精品有限公司| 久久久久成人精品免费播放动漫| 免费短视频成人日韩| 亚洲精品小视频| 国产精品成人观看视频免费| 亚洲欧美久久| 乱人伦精品视频在线观看| 亚洲人成毛片在线播放女女| 欧美日本韩国一区二区三区| 中日韩美女免费视频网站在线观看| 亚洲免费视频在线观看| 国产精品综合| 美女精品一区| 一区二区三区高清| 久久女同精品一区二区| 亚洲精品在线观看视频| 国产精品久久一区二区三区| 久久国产黑丝| 亚洲美女中出| 老司机一区二区三区| 夜夜嗨一区二区三区| 国产欧美日韩视频| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲高清在线精品| 欧美日韩亚洲成人| 久久精品视频导航| 亚洲每日更新| 久久这里有精品15一区二区三区| 亚洲美女诱惑| 国内成+人亚洲| 欧美日韩国产色站一区二区三区| 午夜影视日本亚洲欧洲精品| 欧美激情a∨在线视频播放| 午夜精品福利一区二区三区av | 欧美日韩mv| 久久狠狠婷婷| 亚洲午夜精品福利| 亚洲啪啪91| 老司机午夜精品| 欧美一级欧美一级在线播放| 亚洲欧洲在线看| 激情久久五月天| 国产精品一区二区女厕厕| 欧美 日韩 国产精品免费观看| 午夜在线a亚洲v天堂网2018| 洋洋av久久久久久久一区| 欧美激情在线观看| 久久婷婷影院| 久久精品视频在线免费观看| 亚洲欧美亚洲| 亚洲午夜女主播在线直播| 亚洲国产专区| 亚洲第一区在线观看| 国产最新精品精品你懂的| 国产精品区一区| 欧美亚洲不卡| 欧美日韩一区国产| 欧美精品一区二区三区久久久竹菊| 久久在线视频在线| 久久久久久久尹人综合网亚洲 | 亚洲精品激情| 亚洲经典视频在线观看| 欧美黑人国产人伦爽爽爽| 猛男gaygay欧美视频| 久久亚洲视频| 蜜臀av在线播放一区二区三区| 久久久久久夜| 免播放器亚洲一区| 牛人盗摄一区二区三区视频| 久久综合网hezyo| 蜜臀久久99精品久久久画质超高清| 久久久久高清| 欧美成人精品影院| 欧美激情视频一区二区三区不卡| 欧美ab在线视频| 亚洲国产天堂久久综合| 亚洲久久一区| 亚洲一区二区三区色| 香港成人在线视频| 久久久久久国产精品mv| 欧美.日韩.国产.一区.二区| 欧美成人午夜77777| 欧美日韩综合在线免费观看| 国产精品视频一| 国产伊人精品| 亚洲人成免费| 亚洲一区二区三区四区五区黄| 羞羞色国产精品| 欧美a级片一区| 99精品免费网| 久久se精品一区精品二区| 美女精品在线观看| 国产精品久久久久久久9999| 国产一区二区观看| 亚洲精品美女在线| 新片速递亚洲合集欧美合集| 久久性天堂网| 一本色道久久综合一区| 欧美在线一二三| 欧美日韩成人在线| 国产尤物精品| 亚洲性夜色噜噜噜7777| 久久久久久一区二区| 亚洲欧洲日产国码二区| 小处雏高清一区二区三区| 免费日韩av电影| 国产欧美精品一区二区色综合| 在线日本高清免费不卡| 亚洲欧美成人精品| 欧美国产日本| 先锋影音久久| 欧美日韩亚洲一区三区| 好看的日韩av电影| 亚洲欧美国产高清va在线播| 欧美成在线观看| 午夜视频在线观看一区| 欧美日韩在线电影| 亚洲精品韩国| 欧美波霸影院| 久久国产精品久久久久久久久久 |