欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言中的數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換

 更新時(shí)間:2025年03月26日 10:07:55   作者:1101 1101  
這篇文章主要介紹了C語言中的數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

C語言數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換

強(qiáng)制類型轉(zhuǎn)換:是通過類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn)的,主要的數(shù)據(jù)類型轉(zhuǎn)換分為自動(dòng)轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換。

需要注意,不管哪種轉(zhuǎn)換,都是暫時(shí)改變表達(dá)式的值, 都只是為了本次運(yùn)算的需要而對變量的數(shù)據(jù)長度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時(shí)對該變量定義的類型。

其一般形式為:(類型說明符)(表達(dá)式)

其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成(類型說明符)所表示的類型

自動(dòng)轉(zhuǎn)換

是在源類型和目標(biāo)類型兼容,以及目標(biāo)類型廣于源類型時(shí)發(fā)生一個(gè)類型到另一類的轉(zhuǎn)換

例如: (float) a 把a(bǔ)轉(zhuǎn)換為浮點(diǎn)型,(int)(x+y) 把x+y的結(jié)果轉(zhuǎn)換為整型。

但需要注意的是關(guān)于float類型運(yùn)算,下面這個(gè)float類型的運(yùn)算代碼,輸出結(jié)果是3.400000

#include <stdio.h>int main()
{
   int sum = 17, count = 5;
   double mean;   mean = (double) sum / count;
   printf("Value of mean : %f\n", mean );}

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

在C語言中,如果進(jìn)行兩個(gè)整數(shù)的除法運(yùn)算,結(jié)果會(huì)自動(dòng)舍去小數(shù)部分,例如5/2=2,不是2.5。

所以你想進(jìn)行浮點(diǎn)型的除法運(yùn)算,必須保證至少一個(gè)操作數(shù)是浮點(diǎn)數(shù)。

對于float類型的強(qiáng)制轉(zhuǎn)化運(yùn)算,與int類型的強(qiáng)制轉(zhuǎn)換運(yùn)算中

兩個(gè)int類型強(qiáng)制轉(zhuǎn)換運(yùn)算要寫成(int)(x+y) 把x+y的結(jié)果轉(zhuǎn)換為整型,其中(x+y)加括號的原因是,x與y是非int型,如果有小數(shù)的運(yùn)算,可能會(huì)發(fā)生進(jìn)1,導(dǎo)致最終轉(zhuǎn)變的整型數(shù)+1,例如:

float x=2.6; float y=3.7;
(int)(x+y)=6;
(int)x+y=5;

所以對于強(qiáng)制轉(zhuǎn)變成int類型要對x,y加括號,先進(jìn)行括號里面的運(yùn)算,在轉(zhuǎn)變成int型。

對于兩個(gè)float類型的強(qiáng)制轉(zhuǎn)換運(yùn)算,必須保證兩個(gè)操作數(shù)中至少有一個(gè)數(shù)是float類型。

如:

int x=3;
int y=2;(float)x/y=1.500000; //先把x變成float類型,在與int類型的y進(jìn)行除法運(yùn)算,結(jié)果是float類型計(jì)算完整結(jié)果的1.5
(float)(x/y)=1.000000; //先把兩個(gè)int類型的x與y進(jìn)行計(jì)算,結(jié)果是1,在轉(zhuǎn)變成float類型1.0,可知計(jì)算不完整。
(float)x/(float)y=1.500000; //先把int類型的x轉(zhuǎn)換成float類型,再把int類型的y轉(zhuǎn)換成float類型,結(jié)果是float類型的1.5,計(jì)算結(jié)果完整。

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

如果一個(gè)運(yùn)算符兩邊的運(yùn)算數(shù)類型不同,先要將其轉(zhuǎn)換為相同的類型,即較低類型轉(zhuǎn)換為較高類型,然后再參加運(yùn)算,轉(zhuǎn)換規(guī)則如下所示。

double ←── float 高

long

unsigned

int ←── char,short 低

圖中橫向箭頭表示必須的轉(zhuǎn)換,如兩個(gè)float型數(shù)參加運(yùn)算,雖然它們類型相同,但仍要先轉(zhuǎn)成double型再進(jìn)行運(yùn)算,結(jié)果亦為double型。

縱向箭頭表示當(dāng)運(yùn)算符兩邊的運(yùn)算數(shù)為不同類型時(shí)的轉(zhuǎn)換,如一個(gè)long 型數(shù)據(jù)與一個(gè)int型數(shù)據(jù)一起運(yùn)算,需要先將int型數(shù)據(jù)轉(zhuǎn)換為long型, 然后兩者再進(jìn)行運(yùn)算,結(jié)果為long型。

所有這些轉(zhuǎn)換都是由系統(tǒng)自動(dòng)進(jìn)行的叫自動(dòng)轉(zhuǎn)換, 使用時(shí)你只需從中了解結(jié)果的類型即可。這些轉(zhuǎn)換可以說是自動(dòng)的,當(dāng)然,C語言也提供了以顯式的形式強(qiáng)制轉(zhuǎn)換類型的機(jī)制。

當(dāng)較低類型的數(shù)據(jù)轉(zhuǎn)換為較高類型時(shí),一般只是形式上有所改變, 而不影響數(shù)據(jù)的實(shí)質(zhì)內(nèi)容, 而較高類型的數(shù)據(jù)轉(zhuǎn)換為較低類型時(shí)則可能有些數(shù)據(jù)丟失。

強(qiáng)制轉(zhuǎn)換類型

說明符和表達(dá)式都必須加括號(單個(gè)變量可以不加括號),如把(int)(x+y)寫成(int)x+y則成了把x轉(zhuǎn)換成int型之后再與y相加了。

無論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對變量的數(shù)據(jù)長度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時(shí)對該變量定義的類型。

例1:

main()
{
float f=5.75;
printf("f=%d,f=%f\n",(int)f,f);
}
f=5,f=5.750000

將float f強(qiáng)制轉(zhuǎn)換成int f ,5.75->5

float f=5.75;
printf("(int)f=%d,f=%f\n",(int)f,f);

本例表明,f雖強(qiáng)制轉(zhuǎn)為int型,但只在運(yùn)算中起作用, 是臨時(shí)的,而f本身的類型并不改變。因此,(int)f的值為 5(刪去了小數(shù)),而f的值仍為5.75。

數(shù)據(jù)類型主要有以下幾種方式

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言學(xué)好遞歸看這一篇就夠了

    C語言學(xué)好遞歸看這一篇就夠了

    遞歸指的是在函數(shù)的定義中使用函數(shù)自身的方法,舉個(gè)例子: 從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事呢!故事是什么呢?"從前有座山,山里有座廟,廟里有個(gè)老和尚,正在給小和尚講故事呢!故事是什么呢?"從前有座山,山里有座廟,循環(huán)下去
    2021-10-10
  • C語言學(xué)籍管理系統(tǒng)源代碼

    C語言學(xué)籍管理系統(tǒng)源代碼

    這篇文章主要為大家詳細(xì)介紹了C語言學(xué)籍管理系統(tǒng)源代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C++inline函數(shù)的特性你了解嗎

    C++inline函數(shù)的特性你了解嗎

    這篇文章主要為大家詳細(xì)介紹了C++的inline函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++函數(shù)對象詳解附帶實(shí)例

    C++函數(shù)對象詳解附帶實(shí)例

    這篇文章主要介紹了C++函數(shù)對象詳解附帶實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • C語言深入探究水仙花數(shù)與變種水仙花數(shù)代碼

    C語言深入探究水仙花數(shù)與變種水仙花數(shù)代碼

    求水仙花數(shù)和變種水仙花數(shù)是非常適合初學(xué)者學(xué)習(xí)的代碼,其中包含的循環(huán)和邏輯方式等知識點(diǎn)。這既能起到對以往知識的復(fù)習(xí),也可以學(xué)習(xí)到一種不同的邏輯思考方式
    2022-05-05
  • Qt下監(jiān)測內(nèi)存泄漏的方法

    Qt下監(jiān)測內(nèi)存泄漏的方法

    在寫Qt應(yīng)用程序時(shí),由于是采用C++語言,經(jīng)常會(huì)碰到一個(gè)令人棘手的問題,那就是內(nèi)存泄漏,本文主要介紹了Qt下監(jiān)測內(nèi)存泄漏的方法,感興趣的可以了解一下
    2021-12-12
  • 淺析設(shè)計(jì)模式中的代理模式在C++編程中的運(yùn)用

    淺析設(shè)計(jì)模式中的代理模式在C++編程中的運(yùn)用

    這篇文章主要介紹了設(shè)計(jì)模式中的代理模式在C++編程中的運(yùn)用,代理模式最大的好處就是實(shí)現(xiàn)了邏輯和實(shí)現(xiàn)的徹底解耦,需要的朋友可以參考下
    2016-03-03
  • C++中指針的引用*&的具體使用

    C++中指針的引用*&的具體使用

    本文主要介紹了C++中指針的引用*&的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 一文帶你深入了解C++中音頻PCM數(shù)據(jù)

    一文帶你深入了解C++中音頻PCM數(shù)據(jù)

    PCM(Pulse Code Modulation)也被稱為脈沖編碼調(diào)制,是數(shù)字通信的編碼方式之一。這篇文章主要和大家聊聊C++中音頻PCM數(shù)據(jù)的相關(guān)操作,需要的可以參考一下
    2023-02-02
  • C++將音頻PCM數(shù)據(jù)封裝成wav文件的方法

    C++將音頻PCM數(shù)據(jù)封裝成wav文件的方法

    這篇文章主要為大家詳細(xì)介紹了C++將音頻PCM數(shù)據(jù)封裝成wav文件的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論