最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言強(qiáng)制類型轉(zhuǎn)換規(guī)則實(shí)例詳解

 更新時(shí)間:2022年06月02日 10:34:28   作者:qq_43133135  
強(qiáng)制類型轉(zhuǎn)換是把變量從一種類型轉(zhuǎn)換為另一種數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言強(qiáng)制類型轉(zhuǎn)換的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

整形之間的強(qiáng)制轉(zhuǎn)換

在強(qiáng)制類型轉(zhuǎn)換中,我們常用的整形強(qiáng)制轉(zhuǎn)換有無(wú)符號(hào)和有符號(hào)類型的強(qiáng)制轉(zhuǎn)換。所以首先我們得介紹一下計(jì)算機(jī)中存儲(chǔ)數(shù)字的方式,計(jì)算機(jī)中通常以補(bǔ)碼的形式來(lái)存儲(chǔ)數(shù)據(jù),以8位數(shù)據(jù)為例,二進(jìn)制與有符號(hào)數(shù)的對(duì)應(yīng)關(guān)系為:

012127-128-127-1
0000 00000000 00010000 00100111 11111000 00001000 00011111 1111

無(wú)符號(hào)轉(zhuǎn)有符號(hào)

012127128129255
0000 00000000 00010000 00100111 11111000 00001000 00011111 1111

所以對(duì)于有符號(hào)數(shù),首先最高位是正負(fù)的標(biāo)志位。要將無(wú)符號(hào)數(shù)強(qiáng)制轉(zhuǎn)化為有符號(hào)數(shù)時(shí),其內(nèi)存上的二進(jìn)制是不會(huì)改變的,只是我們對(duì)它的解釋變了,即無(wú)符號(hào)數(shù)128強(qiáng)制轉(zhuǎn)化有符號(hào)數(shù)即-128。

當(dāng)然這樣引申出來(lái)的一種好處就是對(duì)于有符號(hào)數(shù)的判斷,如

char a;
...
if((a>=0)&&(a<80))
{
....
}

可以使用強(qiáng)制轉(zhuǎn)化,省去一個(gè)判斷條件

char a;
...
if( ((unsigned char)a) < 80)
{
....
}

有符號(hào)轉(zhuǎn)無(wú)符號(hào)

將有符號(hào)數(shù)變成無(wú)符號(hào)數(shù)時(shí),情況也類似,如8位的有符號(hào)數(shù)120轉(zhuǎn)無(wú)符號(hào)也是120,但8位的-1轉(zhuǎn)無(wú)符號(hào)則為255。所以當(dāng)我們?cè)谟蟹?hào)數(shù)的計(jì)算中,想保留大于等于0的數(shù),不能通過(guò)強(qiáng)制轉(zhuǎn)化來(lái)完成,必須得加判斷:

char a,b,d;
unsigned char c;
....
c=(unsigned char)(a+b);  (×):當(dāng)運(yùn)算結(jié)果小于0時(shí)c會(huì)異常,變成超級(jí)大數(shù)

d=a+b;
c = (d<0)?0:d;           (√)

不同長(zhǎng)度數(shù)字轉(zhuǎn)化中的截?cái)?/h3>

比如我有一個(gè)8位的有符號(hào)數(shù)-1,要轉(zhuǎn)換為一個(gè)16位的有符號(hào)數(shù),那么結(jié)果仍舊是-1。首先我們要明確一點(diǎn),那就是雖然8位的有符號(hào)數(shù)-1的二進(jìn)制原本1111 1111,但載入32位的cpu中運(yùn)算時(shí),它將轉(zhuǎn)化為32位的有符號(hào)數(shù)進(jìn)行運(yùn)算,即int類型的-1。所以對(duì)于char類型的數(shù)據(jù),即使運(yùn)算結(jié)果超過(guò)了該類型,其實(shí)也不會(huì)發(fā)生異常:

char a=127,b=127,c=127,e;
int d;
....
e=a+b+c;   	 (×):當(dāng)運(yùn)算結(jié)果超過(guò)存儲(chǔ)類型的表示范圍時(shí),會(huì)因截?cái)喈a(chǎn)生錯(cuò)誤
d=a+b+c;     (√):32位的int類型足夠存儲(chǔ)結(jié)果。

所以我們?nèi)绻巡煌L(zhǎng)度的數(shù)字進(jìn)行類型轉(zhuǎn)換,只有兩個(gè)步驟:

1、將該數(shù)表示為32位
2、將32位數(shù)截?cái)酁榻Y(jié)果類型

不過(guò),可以確定的一點(diǎn)就是,進(jìn)行第一步時(shí),數(shù)的值不會(huì)發(fā)生變化:

比如8位有符號(hào)數(shù)-1(1111 1111)將轉(zhuǎn)化為32位的-1(1111 1111 1111 1111 … 1111 111)。
而8位的無(wú)符號(hào)數(shù)255(1111 1111)轉(zhuǎn)為32位時(shí),也仍舊是255:(0000 0000…0000 0000 1111 111)。

但進(jìn)行第二步轉(zhuǎn)換時(shí),值會(huì)由于截?cái)喽l(fā)生變化,而這個(gè)截?cái)嘁话闶歉呶唤財(cái)啵ㄉ釛壐呶?,保留低位)?/p>

如int類型的255(0000 0000 … 0000 0000 1111 1111)轉(zhuǎn)化為8為的unsigned char類型時(shí),前面的0將被截?cái)啵槐A舻?位,即255(1111 1111),當(dāng)然,若是轉(zhuǎn)為8為的有符號(hào)char類型,則為-1(1111 1111)。截?cái)嗍嵌M(jìn)制層面的位數(shù)截?cái)?,與實(shí)際值無(wú)關(guān)。

整形與浮點(diǎn)數(shù)的強(qiáng)制類型轉(zhuǎn)換

我們都知道浮點(diǎn)數(shù)float類型一般遵循ieee754標(biāo)準(zhǔn),有符號(hào)位,階碼和尾數(shù):

與整形相同,符號(hào)位是1時(shí)代表負(fù)數(shù),是0則為正數(shù)。而階碼代表小數(shù)點(diǎn)在哪兒,類似于科學(xué)計(jì)數(shù)法100會(huì)被表示為 1.0 × 10^2。詳細(xì)的這里不介紹了,我們重點(diǎn)放在強(qiáng)制轉(zhuǎn)化上:

對(duì)于一個(gè)int類型的數(shù),只要在浮點(diǎn)數(shù)的表示范圍內(nèi),便可以正確的轉(zhuǎn)為浮點(diǎn)數(shù)格式。

但是對(duì)于一個(gè)浮點(diǎn)類型的數(shù),在轉(zhuǎn)化為整形時(shí),則會(huì)只保留整數(shù)位,如:

int a= (int)0.1;    即a=0
int a= (int)1.1;    即a=1
int a= (int)1.5;    即a=1
int a= (int)-1.5;   即a=-1

所以如果要四舍五入之類的的,則不能靠強(qiáng)制轉(zhuǎn)換,得用相關(guān)的函數(shù)。當(dāng)然若是轉(zhuǎn)為其他整形,則結(jié)果將有32位的整形結(jié)果進(jìn)行截?cái)嗟玫健?/p>

當(dāng)然,強(qiáng)制轉(zhuǎn)換和 floor 這個(gè)函數(shù)的功能其實(shí)很像,floor函數(shù)的功能是向下取整:

int a= floorf(0.1);    即a=0
int a= floorf(1.1);    即a=1
int a= floorf(1.5);    即a=1

對(duì)于大于0的浮點(diǎn)數(shù),他倆其實(shí)可以替換,而當(dāng)小于0時(shí),他倆區(qū)別很大:

int a= floorf(-0.1);    即a=-1
int a= floorf(-1.1);    即a=-2

int a=(int)-0.1;        即a=0
int a=(int)-1.1;        即a=-1

強(qiáng)制轉(zhuǎn)化的結(jié)果,會(huì)產(chǎn)生正負(fù)0這種概念,如-0.9到0.9強(qiáng)制轉(zhuǎn)化結(jié)果都為0。使用強(qiáng)制轉(zhuǎn)化時(shí)會(huì)產(chǎn)生越界輸出

總結(jié)

到此這篇關(guān)于C語(yǔ)言強(qiáng)制類型轉(zhuǎn)換規(guī)則的文章就介紹到這了,更多相關(guān)C語(yǔ)言強(qiáng)制類型轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)密碼程序

    C語(yǔ)言實(shí)現(xiàn)密碼程序

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)密碼程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C++中int、DWORD和QWORD示例詳解

    C++中int、DWORD和QWORD示例詳解

    當(dāng)談?wù)揅++編程語(yǔ)言時(shí),以下術(shù)語(yǔ)經(jīng)常被提及:int、DWORD和QWORD,它們是用于表示不同數(shù)據(jù)類型和長(zhǎng)度的關(guān)鍵字,本文通過(guò)舉例給大家詳細(xì)介紹,感興趣的朋友一起看看吧
    2024-06-06
  • C語(yǔ)言實(shí)現(xiàn)三子棋的示例代碼

    C語(yǔ)言實(shí)現(xiàn)三子棋的示例代碼

    所謂三子棋,就是三行三列的棋盤,玩家可以和電腦下棋,率先連成三個(gè)的獲勝。這篇文章主要為大家詳細(xì)介紹了如何通過(guò)C語(yǔ)言實(shí)現(xiàn)三子棋小游戲,感興趣的小伙伴可以嘗試一下
    2023-01-01
  • VC文件目錄常見(jiàn)操作實(shí)例匯總

    VC文件目錄常見(jiàn)操作實(shí)例匯總

    這篇文章主要介紹了VC文件目錄常見(jiàn)操作實(shí)例匯總,總結(jié)了VC針對(duì)文件目錄的各種常用操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C++實(shí)現(xiàn)LeetCode(16.最近三數(shù)之和)

    C++實(shí)現(xiàn)LeetCode(16.最近三數(shù)之和)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(16.最近三數(shù)之和),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++中std::conditional的使用說(shuō)明

    C++中std::conditional的使用說(shuō)明

    這篇文章主要介紹了C++中std::conditional的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C語(yǔ)言進(jìn)階二叉樹(shù)的基礎(chǔ)與銷毀及層序遍歷詳解

    C語(yǔ)言進(jìn)階二叉樹(shù)的基礎(chǔ)與銷毀及層序遍歷詳解

    朋友們好,這篇播客我們繼續(xù)C++的初階學(xué)習(xí),現(xiàn)在對(duì)我們對(duì)C++的二叉樹(shù)基礎(chǔ)oj與二叉樹(shù)銷毀和層序遍歷進(jìn)行練習(xí),讓我們相互學(xué)習(xí),共同進(jìn)步
    2022-06-06
  • C/C++中memset,memcpy的使用及fill對(duì)數(shù)組的操作

    C/C++中memset,memcpy的使用及fill對(duì)數(shù)組的操作

    這篇文章主要介紹了C/C++中memset,memcpy的使用及fill對(duì)數(shù)組的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • OpenCV實(shí)現(xiàn)簡(jiǎn)單攝像頭視頻監(jiān)控程序

    OpenCV實(shí)現(xiàn)簡(jiǎn)單攝像頭視頻監(jiān)控程序

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)簡(jiǎn)單攝像頭視頻監(jiān)控程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • C 語(yǔ)言快速排序?qū)嵗a

    C 語(yǔ)言快速排序?qū)嵗a

    本文主要介紹了C語(yǔ)言的快速排序算法,這里給大家舉例說(shuō)明并附代碼實(shí)例,需要的朋友可以參考下
    2016-07-07

最新評(píng)論

乐业县| 商南县| 舒城县| 宜章县| 苍山县| 枣强县| 莎车县| 同江市| 金平| 罗山县| 澜沧| 芜湖市| 牟定县| 鞍山市| 旌德县| 志丹县| 怀柔区| 延边| 大安市| 菏泽市| 清丰县| 康定县| 余庆县| 防城港市| 沙河市| 六枝特区| 久治县| 县级市| 射洪县| 盐城市| 卓资县| 昌吉市| 大同市| 长治县| 涟水县| 瑞丽市| 蓝田县| 凤台县| 绵阳市| 达日县| 合作市|