帮忙看一个程序

#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,到底是怎样算的

慕神7194819
浏览 1864回答 6
6回答

Happy穷鬼

如果是课本上的题目,应该是要考虑类型转换,以及转换时截断的规则。这个转换规则往往与编译器的实现有关系的,比如float是几个字节,int是几个字节,int转float,float转长整型具体怎么转,你可以在同一个编译器测试一下(不单单测试你这个小程序哦,你可以设计几个测试例子,比如 float a = 1,234; println("%ld\n",a);),你可以用两个不同编译器对比一下,会更清楚。

艾格尼丝和小黄人

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了

joker_pumpkin

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

雅趣

我这条件不允许,没测试不过你那个如果可以跑的话应该是1.4,返回值为float 型。
打开App,查看更多内容
随时随地看视频慕课网APP