C的隱式類型轉換

來源:互聯網
上載者:User

標籤:style   color   os   strong   資料   re   

C的隱式類型轉換

隱式類型轉換分三種,即算術轉換、賦值轉換和輸出轉換。

1.算術轉換

    進行算術運算(加、減、乘、除、取餘以及符號運算)時,不同類型數招必須轉換成同 一類型

    的資料才能運算,算術轉換原則為:

    1.1  整型提升:

    對於所有比int小的類型,包括char, signed char, unsigned char, short, unsigned short,

    首先會提升為int類型。

    在進行運算時,以運算式中最長類型為主,將其他類型位據均轉換成該類型,如:

    (1)若運算數中有double型或float型,則其他類型資料均轉換成double類型進行運算。

    (2)若運算數中最長的類型為long型.則其他類型數均轉換成long型數。

    (3)若運算數中最長類型為int型,則char型也轉換成int型進行運算。算術轉換是在運算過程中自

         動完成的。

    1.2  特別注意的是有符號和無符號之間的轉換:

     包含long與unsigned int,32位機器上都是4位元組,所以均轉換為unsigned long.

     包含signed與unsigned int,signed會轉換為unsigned。如果int恰好為負數,其結果為對

      unsigned取值個數求模的結果。比如將-1賦給8位的unsigned char,呢麼結果就是255

    (-1對256模數後的值)。unsigned char取值範圍0~255。

2.賦值轉換

    進行賦值操作時,賦值運算子右邊的資料類型必須轉換成賦值號左邊的類型,若右邊的資料

    類型的長度大於左邊,則要進行截斷或舍入操作。

下面用一執行個體說明:

char ch;int i,result;float f;double d;result=ch/i+(f*d-i);

(1)首先計算 ch/i,ch → int型,ch/i → int型。

(2)接著計算 f*d-i,由於最長型為double型,故f→double型,i→double型,f*d-i→double型。

(3)(ch/i) 和(f*d-i)進行加運算,由於f*d-i為double型,故ch/i→double型,ch/i+(f*d-i)→double型。

(4)由於result為int型,故ch/i+(f*d-i)→double→int,即進行截斷與舍入,最後取值為整型。

3.輸出轉換

    在程式中將資料用printf函數以指定格式輸出時,當要輸出的鹽據類型與輸出格式不符時,便自

    動進行類型轉換,如一個long型資料用整型格式(%d)輸出時,則相當於將long型轉換成整型

    (int)資料輸出;一個字元(char)型資料用整型格式輸出時,相當於將char型轉 換成int型輸出。

    注意:較長型資料轉換成短型資料輸出時,其值不能超出短型資料允許的值範圍,否則 轉換時

    將出錯。如:

long a=80000;printf("%d",a);

     運行結果為14464,因為int型允許的最大值為32767,80000超出此值,故結果取以32768

     為模的餘數,即進行如下取餘運算:

(80000-32768)-32768=14464;

    輸出的資料類型與輸出格式不符時常常發生錯誤,如:

int d=9;printf("%f",d);

    或

float c=3.2;printf("%d",c);

    將產生錯誤的結果。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.