C++類型轉換

來源:互聯網
上載者:User

標籤:

C++中有豐富的類型,在對不同類型進行運算時,就需要進行類型轉化。

總的轉換規則:將小範圍類型轉換為大範圍類型,例如:float->double,short->int,int->long,等等。C++這樣轉換是為了不損失精度,而對於對資料精度要求較高的應用來說精度損失無疑是災難。需要指出:將0賦給bool變數時,將被轉換為false;而非零值將被轉換為true。

運算式中的轉換:

當同一個運算式中包含兩種不同的算術類型時,C++將執行兩種自動轉化。1、一些類型在出現時便會自動轉換;2、有些類型在於其他類型同時出現在運算式中時將會轉換。

自動轉換:C++在計算運算式時,會將bool,char,unsigned char,signed char,short值轉換為int。這種轉換成為整形提升(integral promotion)。例:當有兩個short型變數相加時,C++會將short型轉為int型,在進行加運算,然後再轉為賦值號左運算元的類型。至於2遵循轉換規則即可,不再贅述。

強制類型轉化 

強制類型轉換格式有兩種:1、(typeName) value;2、typeName(value)

第一種格式源於C語言。第二種格式是C++特有,像不像函數調用!

另外C++還引入了4中強制類型轉換預算符,以後再討論。下面給出代碼:

 

//類型轉換

#include<iostream>

int main()
{
    using namespace std;

    int intthree = 3;                    //將小範圍值付給大範圍值,精度不損失。反之有可能損失精度,從而帶來麻煩。
    long lthree = intthree; 
    cout<<lthree<<endl;            //output:3
    long lnum = 3456765;
    short snum = lnum;
    cout<<snum<<endl;            //output: -16643
    cout<<lnum<<endl;             //output: 3456765
    signed int intfu = -5;
    unsigned int intzheng = 10000;
    cout<<intfu<<endl;             //output: -5

    int inth = 64;
                                         //強制類型轉換並不改變變數本身在值,而是建立一個新的,指定類型在值,這個值通常在運算式中使用。
    cout<<static_cast<unsigned char>(inth)<<endl;              //output: @


}

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.