看看這兩段代碼 我用VC++6.0 編譯出來都一樣???
#include <stdio.h>
int main()
{
??? char c = 'a';
??? int n = c ;??????? //將c賦值給n
??? float f = n ;????? //將c賦值給f
??? double d = f ;???? //將c賦值給d
??? printf("%d\n",n);
??? printf("%f\n",f);
??? printf("%lf\n",d);
??? return 0;???
}
#include <stdio.h>
int main()
{
??? char c = 'a';
??? int n = c ;?????? //將c賦值給n
??? float f =c ;????? //將c賦值給f
??? double d =c ;???? //將c賦值給d
??? printf("%d\n",n);
??? printf("%f\n",f);
??? printf("%lf\n",d);
??? return 0;???
}
2015-03-06
你是想問為什么直接用c來賦值也沒錯嗎?
char也屬于整型。
用整型給浮點型變量賦值時,整型會先轉(zhuǎn)換為浮點型(還有一些細則,但基本是這個邏輯)。
所以不管你用int還是char來做初值,它們都會轉(zhuǎn)成浮點型。轉(zhuǎn)換后浮點數(shù)的整數(shù)部分就是整型的數(shù)值。
所以你這兩個程序的輸出一樣。