0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

強(qiáng)制類型轉(zhuǎn)換是把變量從一種類型轉(zhuǎn)換為另一種數(shù)據(jù)類型

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-11-12 14:59 ? 次閱讀

強(qiáng)制類型轉(zhuǎn)換是把變量從一種類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。例如,如果您想存儲一個 long 類型的值到一個簡單的整型中,您需要把 long 類型強(qiáng)制轉(zhuǎn)換為 int 類型。您可以使用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符來把值顯式地從一種類型轉(zhuǎn)換為另一種類型,如下所示:

(type_name) expression

請看下面的實(shí)例,使用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符把一個整數(shù)變量除以另一個整數(shù)變量,得到一個浮點(diǎn)數(shù):

#includeintmain()

{ intsum = 17, count = 5;

doublemean; mean = (double)sum / count;

printf("Value of mean : %f ", mean); }

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會產(chǎn)生下列結(jié)果:

Value of mean :3.400000

這里要注意的是強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的優(yōu)先級大于除法,因此sum的值首先被轉(zhuǎn)換為double型,然后除以 count,得到一個類型為 double 的值。

類型轉(zhuǎn)換可以是隱式的,由編譯器自動執(zhí)行,也可以是顯式的,通過使用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符來指定。在編程時(shí),有需要類型轉(zhuǎn)換的時(shí)候都用上強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,是一種良好的編程習(xí)慣。

整數(shù)提升

整數(shù)提升是指把小于int或unsigned int的整數(shù)類型轉(zhuǎn)換為int或unsigned int的過程。請看下面的實(shí)例,在 int 中添加一個字符:

#includeintmain()

{ inti = 17;

charc = 'c'; /* ascii 值是 99 */ intsum; sum = i + c;

printf("Value of sum : %d ", sum); }

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會產(chǎn)生下列結(jié)果:

Value of sum :116

在這里,sum 的值為 116,因?yàn)榫幾g器進(jìn)行了整數(shù)提升,在執(zhí)行實(shí)際加法運(yùn)算時(shí),把 'c' 的值轉(zhuǎn)換為對應(yīng)的 ascii 值。

常用的算術(shù)轉(zhuǎn)換

常用的算術(shù)轉(zhuǎn)換是隱式地把值強(qiáng)制轉(zhuǎn)換為相同的類型。編譯器首先執(zhí)行整數(shù)提升,如果操作數(shù)類型不同,則它們會被轉(zhuǎn)換為下列層次中出現(xiàn)的最高層次的類型:

常用的算術(shù)轉(zhuǎn)換不適用于賦值運(yùn)算符、邏輯運(yùn)算符 && 和 ||。讓我們看看下面的實(shí)例來理解這個概念:

#includeintmain(){ inti = 17;

charc = 'c'; /* ascii 值是 99 */ floatsum; sum = i + c;

printf("Value of sum : %f ", sum); }

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會產(chǎn)生下列結(jié)果:

Value of sum :116.000000

在這里,c 首先被轉(zhuǎn)換為整數(shù),但是由于最后的值是 double 型的,所以會應(yīng)用常用的算術(shù)轉(zhuǎn)換,編譯器會把 i 和 c 轉(zhuǎn)換為浮點(diǎn)型,并把它們相加得到一個浮點(diǎn)數(shù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134208
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1602

    瀏覽量

    48896

原文標(biāo)題:C語言中的強(qiáng)制類型轉(zhuǎn)換

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    GaussDB 數(shù)據(jù)類型介紹

    進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,以滿足不同的需求。本文將以示例的形式羅列并介紹些常見的數(shù)據(jù)類型轉(zhuǎn)換方法等。? 數(shù)據(jù)類
    的頭像 發(fā)表于 06-05 16:40 ?1507次閱讀
    GaussDB <b class='flag-5'>數(shù)據(jù)類型</b>介紹

    JAVA語言的數(shù)據(jù)類型轉(zhuǎn)換

    JAVA語言的數(shù)據(jù)類型轉(zhuǎn)換很多場合需要用到類型轉(zhuǎn)換。例如,要把個整型變量作為字符型
    發(fā)表于 12-06 00:30

    請問使用強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換函數(shù)的時(shí)候,數(shù)據(jù)類型type端該如何設(shè)置,才能使數(shù)據(jù)成功轉(zhuǎn)換類型?

    本帖最后由 只耳朵怪 于 2018-6-26 08:51 編輯 使用強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換函數(shù)的時(shí)候,數(shù)據(jù)類型type端該如何設(shè)置,才能使
    發(fā)表于 06-25 20:33

    基礎(chǔ):stateflow中變量強(qiáng)制類型轉(zhuǎn)換

    使用:例:我定義了變量speed作為輸出,某時(shí)刻指定speed=0,當(dāng)我speed改為uint8類型,就報(bào)錯誤,找了陣沒找到方法,就
    發(fā)表于 10-29 10:42

    Verilog 變量聲明與數(shù)據(jù)類型

    Verilog 變量聲明與數(shù)據(jù)類型Verilog語法中最基本的數(shù)據(jù)類型有 線網(wǎng)(wire),寄存器(reg)和整數(shù)(integer)三種類型
    發(fā)表于 08-10 14:01

    Windows -編程-數(shù)據(jù)類型

    驅(qū)動開發(fā)外包請記住,Rust 是一種靜態(tài)類型語言,這意味著它必須在編譯時(shí)知道所有變量類型。編譯器通常可以根據(jù)值以及我們?nèi)绾问褂盟鼇硗茢辔覀兿胍褂玫?/div>
    發(fā)表于 08-24 14:30

    重視變量數(shù)據(jù)類型

    不管在什么語言中,定義變量時(shí)必然要在內(nèi)存中開辟個相應(yīng)大小的空間來存儲該變量。不同的數(shù)據(jù)類型在內(nèi)存所占的空間大小不同,其所能表示的
    發(fā)表于 01-13 15:05 ?1次下載
    重視<b class='flag-5'>變量</b>的<b class='flag-5'>數(shù)據(jù)類型</b>

    SystemVerilog中$cast的應(yīng)用

    SystemVerilog casting意味著將一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。在將變量賦值給
    的頭像 發(fā)表于 10-17 14:35 ?2588次閱讀

    什么是數(shù)據(jù)類型轉(zhuǎn)換

    常用的3種數(shù)據(jù)類型:1、Python數(shù)據(jù)類型一種:字符串(str)。 2、Python數(shù)據(jù)類型第二:整數(shù)(int)。 3、Pytho
    的頭像 發(fā)表于 02-23 15:21 ?1650次閱讀

    什么是數(shù)據(jù)類型轉(zhuǎn)換

    數(shù)據(jù)類型轉(zhuǎn)換就是將數(shù)據(jù)變量、數(shù)值、表達(dá)式的結(jié)果等)從一種類型轉(zhuǎn)換為
    的頭像 發(fā)表于 02-27 15:04 ?1293次閱讀
    什么是<b class='flag-5'>數(shù)據(jù)類型</b><b class='flag-5'>轉(zhuǎn)換</b>

    Verilog最常用的2種數(shù)據(jù)類型

    Verilog 最常用的 2 種數(shù)據(jù)類型就是線網(wǎng)(wire)與寄存器(reg),其余類型可以理解為這兩種數(shù)據(jù)類型的擴(kuò)展或輔助。
    的頭像 發(fā)表于 05-29 16:27 ?1907次閱讀
    Verilog最常用的2<b class='flag-5'>種數(shù)據(jù)類型</b>

    PLC變量數(shù)據(jù)類型整理

    BYTE、WORD、DWORD、SINT、USINT、INT、UINT、DINT?和UDINT。 注意,當(dāng)較長的數(shù)據(jù)類型轉(zhuǎn)換為較短的數(shù)據(jù)類型時(shí),會丟失高位信息
    發(fā)表于 09-19 12:19 ?3365次閱讀
    PLC<b class='flag-5'>變量</b>的<b class='flag-5'>數(shù)據(jù)類型</b>整理

    Redis的數(shù)據(jù)類型有哪些

    用的一種數(shù)據(jù)類型,普通的key- value 存儲都可以歸為此類。其中Value既可以是數(shù)字也可以是字符串。使用場景:常規(guī)key-value緩存應(yīng)用。常規(guī)計(jì)數(shù): 微博數(shù), 粉絲數(shù)。 2、Hash:Hash 是個鍵值(
    的頭像 發(fā)表于 10-09 10:51 ?658次閱讀

    redis的五種數(shù)據(jù)類型

    Redis是一種高性能的內(nèi)存數(shù)據(jù)庫,常用于緩存、任務(wù)隊(duì)列、分布式鎖等場景。它提供了多種數(shù)據(jù)類型來滿足各種不同的需求,包括字符串(string)、哈希(hash)、列表(list)、集合(set
    的頭像 發(fā)表于 11-16 11:06 ?517次閱讀

    C語言如何掌握強(qiáng)制類型轉(zhuǎn)換的精髓

    強(qiáng)制類型轉(zhuǎn)換變量從一種類型轉(zhuǎn)換為
    的頭像 發(fā)表于 02-26 11:00 ?386次閱讀
    C語言如何掌握<b class='flag-5'>強(qiáng)制</b><b class='flag-5'>類型</b><b class='flag-5'>轉(zhuǎn)換</b>的精髓