为了账号安全,请及时绑定邮箱和手机立即绑定

帮忙看一个程序

帮忙看一个程序

C
慕神7194819 2016-01-31 11:39:56
#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);),你可以用两个不同编译器对比一下,会更清楚。

查看完整回答
反对 回复 2016-02-01
?
艾格尼丝和小黄人

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了


查看完整回答
反对 回复 2016-02-01
?
joker_pumpkin

TA贡献1条经验 获得超0个赞

float输出应该是%f,结果是1.000000

查看完整回答
反对 回复 2016-01-31
?
雅趣

TA贡献29条经验 获得超53个赞

我这条件不允许,没测试不过你那个如果可以跑的话应该是1.4,返回值为float 型。

查看完整回答
反对 回复 2016-01-31
  • 6 回答
  • 0 关注
  • 1829 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信