#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 关注
- 1862 浏览
添加回答
举报
0/150
提交
取消