3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
它不會(huì)打印5,因?yàn)榫幾g器不知道會(huì)自動(dòng)轉(zhuǎn)換為整數(shù)。你需要(int)a自己做。
也就是說,
#include<stdio.h>
void main()
{
float a=5;
printf("%d",(int)a);
}
正確輸出5。
將該程序與
#include<stdio.h>
void print_int(int x)
{
printf("%d\n", x);
}
void main()
{
float a=5;
print_int(a);
}
由于的聲明,編譯器直接知道將float轉(zhuǎn)換為int的位置print_int。

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
正如其他人所說,您需要使用%f格式字符串或?qū)⑵滢D(zhuǎn)換a為int。
但我想指出的是,您的編譯器可能知道printf()的格式字符串,并且可以告訴您您使用的格式錯(cuò)誤。經(jīng)過適當(dāng)調(diào)用(-Wall包括-Wformat)的我的編譯器說:
$ /usr/bin/gcc -Wformat tmp.c
tmp.c: In function ‘main’:
tmp.c:4: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘double’
$ /usr/bin/gcc -Wall tmp.c
tmp.c: In function ‘main’:
tmp.c:4: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘double’
$
哦,還有另一件事:您應(yīng)該在中包含'\ n',printf()以確保將輸出發(fā)送到輸出設(shè)備。
printf("%d\n", a);
/* ^^ */
或fflush(stdout);在printf()。之后使用。
- 3 回答
- 0 關(guān)注
- 530 瀏覽
添加回答
舉報(bào)