乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      c語言中的自動類型轉換

       暗夜魅影 2011-09-13

      c語言中的自動類型轉換

      同一句語句或表達式如果使用了多種類型的變量和常量(類型混用),C 會自動把它們轉換成同一種類型。以下是自動類型轉換的基本規(guī)則:

            1. 在表達式中,char 和 short 類型的值,無論有符號還是無符號,都會自動轉換成 int 或者 unsigned int(如果 short 的大小和 int 一樣,unsigned short 的表示范圍就大于 int,在這種情況下,unsigned short 被轉換成 unsigned int)。因為它們被轉換成表示范圍更大的類型,故而把這種轉換稱為“升級(promotion)”。

            2. 按照從高到低的順序給各種數(shù)據類型分等級,依次為:long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int 和 int。這里有一個小小的例外,如果 long 和 int 大小相同,則 unsigned int 的等級應位于 long 之上。char 和 short 并沒有出現(xiàn)于這個等級列表,是因為它們應該已經被升級成了 int 或者 unsigned int。

            3. 在任何涉及兩種數(shù)據類型的操作中,它們之間等級較低的類型會被轉換成等級較高的類型。

            4. 在賦值語句中,= 右邊的值在賦予 = 左邊的變量之前,首先要將右邊的值的數(shù)據類型轉換成左邊變量的類型。也就是說,左邊變量是什么數(shù)據類型,右邊的值就要轉換成什么數(shù)據類型的值。這個過程可能導致右邊的值的類型升級,也可能導致其類型降級(demotion)。所謂“降級”,是指等級較高的類型被轉換成等級較低的類型。

            5. 作為參數(shù)傳遞給函數(shù)時,char 和 short 會被轉換成 int,float 會被轉換成 double。使用函數(shù)原型可以避免這種自動升級。
       
       
       
      1、隱式轉換
          C在以下四種情況下會進行隱式轉換:
             1、算術運算式中,低類型能夠轉換為高類型。
             2、賦值表達式中,右邊表達式的值自動隱式轉換為左邊變量的類型,并賦值給他。
             3、函數(shù)調用中參數(shù)傳遞時,系統(tǒng)隱式地將實參轉換為形參的類型后,賦給形參。
             4、函數(shù)有返回值時,系統(tǒng)將隱式地將返回表達式類型轉換為返回值類型,賦值給調用函數(shù)。

      2、算數(shù)運算的隱式轉換
          算數(shù)運算中,首先有如下類型轉換規(guī)則:
             1、字符必須先轉換為整數(shù)(C語言規(guī)定字符類型數(shù)據和整型數(shù)據之間可以通用) 。
             2、short型轉換為int型(同屬于整型) 。
             3、float型數(shù)據在運算時一律轉換為雙精度(double)型,以提高運算精度(同屬于實型) 。
          其次,有下面的規(guī)則。
          當不同類型的數(shù)據進行操作時,應當首先將其轉換成相同的數(shù)據類型,然后進行操作,轉換規(guī)則是由低級向高級轉換。轉換規(guī)則如下圖所示:



          上圖的簡化圖如下所示:


      3、算數(shù)運算示例
          執(zhí)行:x = 100 + 'a' + 1.5 * u + f / 'b' - s * 3.1415926
          其中,u為unsigned型,f為float型,s為short型,x為float型。式中右面表達式按如下步驟處理:
             1、首先將'a'、'b'和s換成int,將1.5和f轉換為double型。
             2、計算100+'a',因'a'已轉換為int型,于是此運算結果為197。
             3、計算1.5*u,由于1.5已轉換為double,u是unsigned型,于是首先u轉換為double,然后進行運算,運算結果為double。
             4、計算197+1.5 * u,先將197轉換為double(如197.00…00),其結果為double。
             5、計算f/ 'b',f已轉換為double,'b'已轉換為int,于是先將'b'再轉換為double,其結果為double。
             6、計算(197+1.5 * u)+f / 'b',者均為double,于是結果也為double。
             7、計算s * 3.1415926,先將s由int轉換為double,然后進行運算,其結果為double。
             8、最后與前面得的結果相減,結果為double。
             9、最后將表達式的結果轉換為float并賦給x。

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多