日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C语言开发笔记(一)自动转换和强制转换

發(fā)布時(shí)間:2023/12/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言开发笔记(一)自动转换和强制转换 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? 整型數(shù)據(jù)和實(shí)行數(shù)據(jù)之間可以進(jìn)行運(yùn)算,而且字符型數(shù)據(jù)可以和整型數(shù)據(jù)通用,所以整型、實(shí)型、字符型數(shù)據(jù)之間也是可以進(jìn)行運(yùn)算的,但在運(yùn)算處理之前,不同類型的數(shù)據(jù)要事先轉(zhuǎn)換成同一種數(shù)據(jù)類型。轉(zhuǎn)換方法有兩種:自動(dòng)轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換。

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

原則:

1、若參與運(yùn)算量的類型不同,則先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算;

2、轉(zhuǎn)換按數(shù)據(jù)長(zhǎng)度增加的方向進(jìn)行,以保證精度不降低。如int型和long型運(yùn)算時(shí),先把int型轉(zhuǎn)換成long型后再進(jìn)行運(yùn)算;

3、所有浮點(diǎn)運(yùn)算都是以雙精度進(jìn)行的,即使僅含float單精度量運(yùn)算的表達(dá)式,也要先轉(zhuǎn)換成double型,再進(jìn)行運(yùn)算;

4、char型和short型參與運(yùn)算時(shí),必須先轉(zhuǎn)換成int型;

5、在賦值運(yùn)算中,賦值號(hào)兩邊量的數(shù)據(jù)類型不同時(shí),賦值號(hào)右邊量的類型將轉(zhuǎn)換為左邊量的類型。如果右邊量的數(shù)據(jù)類型長(zhǎng)于左邊時(shí),將丟失一部分?jǐn)?shù)據(jù),這樣會(huì)降低精度,丟失的部分按四舍五入向前舍入。

?

需要注意的是,char轉(zhuǎn)為double的過(guò)程是一次性的,無(wú)需中間過(guò)程,其他轉(zhuǎn)換同樣。

如果運(yùn)算中同時(shí)包含有符號(hào)signed和無(wú)符號(hào)unsigned的數(shù)據(jù),會(huì)自動(dòng)地隱式地將有符號(hào)轉(zhuǎn)換為無(wú)符號(hào),即signed->unsigned。

舉例說(shuō)明

#include <stdio.h>int main(void) {int a = -1;unsigned int b = 1;int c = 0;c = a > b ? a : b; return 0; }

正常邏輯是-1 < 1,所以c的值是1。

但實(shí)際運(yùn)行后c的值是-1。

在編譯的時(shí)候編譯器兄弟也告訴我們:

解析:當(dāng)運(yùn)算a > b時(shí),a先自動(dòng)轉(zhuǎn)換成unsgined,其值即為-1,再與b比較是否比b的值大,結(jié)果為真,所以a的值賦值給c。

我們稍微修改代碼,讓c成為unsigned。

#include <stdio.h>int main(void) {int a = -1;unsigned int b = 1;unsigned int c = 0;c = a > b ? a : b; return 0; }

這時(shí)候看到結(jié)果為

C語(yǔ)言中有符號(hào)整型變量把數(shù)據(jù)的最高位作為符號(hào)位使用,因此能表示數(shù)的正負(fù);

無(wú)符號(hào)整型變量把數(shù)據(jù)的最高位最為數(shù)據(jù)位使用,因此不能表示負(fù)數(shù)。

?

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

強(qiáng)制轉(zhuǎn)換格式為:(數(shù)據(jù)類型)(表達(dá)式)。

需要注意(int)x+y是先把x轉(zhuǎn)換成int型后再與y相加,而(int)(x+y)是把x和y相加的結(jié)果轉(zhuǎn)換成int型。

?

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

總結(jié)

以上是生活随笔為你收集整理的C语言开发笔记(一)自动转换和强制转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。