在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C/ 類型轉(zhuǎn)換,為什么輸出的結(jié)果為0?

類型轉(zhuǎn)換,為什么輸出的結(jié)果為0?

#include <stdio.h>
int main()
{
    int i = 15;
    float m = (float)i;
    printf("%d\n", m);
    return 0;
}

輸出的結(jié)果為什么為0?
我知道應(yīng)該是%f而不是%d的格式輸出浮點型,但是原因是什么?為什么%d輸出浮點型結(jié)果為0?

回答
編輯回答
抱緊我

圖片描述

應(yīng)該就是 %d 的問題 改為 %f 或者 %lf

2017年1月12日 15:24
編輯回答
不舍棄

明明是float,卻用%d來輸出,這是未定義行為。所謂未定義行為,就是編譯器干啥都是可以的,比如給你輸出0,或者15,或者垃圾數(shù)字,或者干脆程序崩潰掉。

clipboard.png

2017年2月5日 06:13
編輯回答
莓森

比如7.5f,二進(jìn)制是111.1,科學(xué)計數(shù)是1.111×2^2,符號位S是0,指數(shù)為2,移碼2+127 = 129;所以階碼為10000001;尾數(shù)是111;所以7.5的機(jī)器碼是0100 0000 1111 0000 0000 0000 0000 0000;但是程序自動把float類型轉(zhuǎn)換為double類型,8個字節(jié),符號位S是0,階碼11位,為00010000001;尾數(shù)111,所以機(jī)器碼為:0000 1000 0001 1110 0000 0000 0000 0000,在內(nèi)存存儲中低位優(yōu)先:0000 0000 0000 0000 1110 0001 1000 0000
%d 輸出的是前4個字節(jié),所以結(jié)果為0;

2017年5月14日 00:31
編輯回答
蔚藍(lán)色

表面原因是:你把 float 類型的變量 m 以 %d 的格式輸出了

2018年8月23日 13:47