第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【請(qǐng)教】類型轉(zhuǎn)換中會(huì)有很多問(wèn)題,如下代碼:

#include <stdio.h>

int main()

{

? ? double num = 2.5; ? ? ?//定義浮點(diǎn)型變量num1并賦值為2.5

? ? printf("num的整數(shù)部分是%d\n", (int)num);

? ? printf("%d \n",num);

? ? printf("%d \n",2.5);

? ? printf("%d \n",(float)2.5);

? ? //*******

? ? printf("\n\nnum2 = num :\n");

? ? int num2 = num;

? ? printf("%d \n",num2);

? ? printf("%f \n",num2);

? ? printf("%g \n",num2);

? ? return 0;

}

【結(jié)果是:】


num的整數(shù)部分是2
4196047
4196051
4196051


num2 = num :
2
2.500000
2.5


【個(gè)人分析:】

前幾個(gè)輸出4196074是因?yàn)榍耙还?jié)說(shuō)的 ?占字節(jié)大的數(shù)轉(zhuǎn)換為小的數(shù)會(huì)出錯(cuò)

而后面輸出int型的num2會(huì)輸出2.5,這個(gè)。。。是因?yàn)槭裁囱嚼蠋煟?/p>

正在回答

1 回答

你在第一個(gè)printf中是用強(qiáng)制類型轉(zhuǎn)換的方式將num轉(zhuǎn)換成int型傳入,不過(guò)準(zhǔn)確的說(shuō),在第二個(gè)printf中并不存在類型轉(zhuǎn)換。

因?yàn)閜rintf中%d代表它希望相應(yīng)的參數(shù)類型為int,如果你傳入的不是int型,一般來(lái)說(shuō)編譯器會(huì)給出警告的,通常仍可編譯通過(guò),但是在運(yùn)行時(shí)printf函數(shù)仍然把那個(gè)參數(shù)當(dāng)作int型來(lái)讀取和打印。一般計(jì)算機(jī)中int和double的存儲(chǔ)方式是不一樣的,所以造成打印出很“奇怪”的數(shù)。


而那個(gè)num2,你用了一個(gè)double類型的num來(lái)初始化,所以編譯器會(huì)先把num轉(zhuǎn)換成int型來(lái)給num2作初值。轉(zhuǎn)換方式就是截掉小數(shù)部分,所以num2的值就是2,類型就是int。

因此printf("%d \n",num2)打印出的結(jié)果很正確。同樣的道理,后面的printf就依照錯(cuò)誤的格式化字符錯(cuò)誤地打印了,結(jié)果并不一定是2.5,實(shí)際上打印出什么都有可能。

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

林澤華 提問(wèn)者

非常感謝!
2015-02-15 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
C語(yǔ)言入門
  • 參與學(xué)習(xí)       926892    人
  • 解答問(wèn)題       21442    個(gè)

C語(yǔ)言入門視頻教程,帶你進(jìn)入編程世界的必修課-C語(yǔ)言

進(jìn)入課程

【請(qǐng)教】類型轉(zhuǎn)換中會(huì)有很多問(wèn)題,如下代碼:

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)