c中資料類型的隱式轉換

來源:互聯網
上載者:User

1、隱式轉換
    C在以下四種情況下會進行隱式轉換:
       1、算術運算式中,低類型能夠轉換為高類型。
       2、賦值運算式中,右邊運算式的值自動隱式轉換為左邊變數的類型,並賦值給他。
       3、函數調用中參數傳遞時,系統隱式地將實參轉換為形參的類型後,賦給形參。
       4、函數有傳回值時,系統將隱式地將返回運算式類型轉換為傳回值類型,賦值給調用函數。

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


    的簡化圖如下所示:

3、算數運算樣本
    執行: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。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.