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

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

艾格尼絲和小黃人
TA貢獻2條經驗 獲得超0個贊
fun函數是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)); } 結果就是1了
- 6 回答
- 0 關注
- 1929 瀏覽
添加回答
舉報
0/150
提交
取消