#include<stdio.h>float fun(int n){? ? ?if(0==n%5)? ? ? ? ?return ++n;? ? ?else? ? ? ? ?return n/5;}void main(){? ? printf("%ld\n",fun(7));}我覺得答案應(yīng)該是1啊,為什么課本上的答案是6,而且我用vc++驗證時答案又是0,到底是怎樣算的
6 回答

Happy窮鬼
TA貢獻1條經(jīng)驗 獲得超0個贊
如果是課本上的題目,應(yīng)該是要考慮類型轉(zhuǎn)換,以及轉(zhuǎn)換時截斷的規(guī)則。這個轉(zhuǎn)換規(guī)則往往與編譯器的實現(xiàn)有關(guān)系的,比如float是幾個字節(jié),int是幾個字節(jié),int轉(zhuǎn)float,float轉(zhuǎn)長整型具體怎么轉(zhuǎn),你可以在同一個編譯器測試一下(不單單測試你這個小程序哦,你可以設(shè)計幾個測試例子,比如 float a = 1,234; println("%ld\n",a);),你可以用兩個不同編譯器對比一下,會更清楚。

艾格尼絲和小黃人
TA貢獻2條經(jīng)驗 獲得超0個贊
fun函數(shù)是float型,但是你輸出的時候是ld長整型。當然會出錯。如果改為
#include<stdio.h> long?fun(int?n){ ?????if(0==n%5) ?????????return?++n; ?????else ?????????return?n/5; } void?main(){ ????printf("%ld\n",fun(7)); } 結(jié)果就是1了
- 6 回答
- 0 關(guān)注
- 1962 瀏覽
添加回答
舉報
0/150
提交
取消