永发信息网

C语言方面问题

答案:7  悬赏:80  手机版
解决时间 2021-04-23 08:58

下面的程序在执行时,哪些地方将发生类型转换?程序打印的值是什么?

(详细说明解答)

int f (int n,float m)
{
return (m+n)/4;
}
int main ()
{
float y=3;
printf ("%d\n",f(y,y+1));
return 0;
}

最佳答案

从主程序开始解释:


float y=3;


输入一个符点数3进入y,此处的3(int)被转化为3.0(float)。


——————————————————————


printf ("%d\n",f(y,y+1));


输出经过 f 函数处理过的结果,此处的 f 函数中的植如入参数被转化了↓


f(y,y+1) => f(3,3.0+1)


//我用3.0代表它还是一个符点数,而原本应该是3.0的第一个3已经转换成了整数。


在此中的 (m+n)/4 则又转换了一次↓


(m+n)/4 => (3.0+3)/4 => (3.0+3.0)/4 => 6.0/4.0 =>1.0


最后根据


int f (int n,float m)


所以1.0又被转换成了整数1。


printf ("%d\n",f(y,y+1));


的结果就为1。

全部回答

return (m+n)/4返回值的类型为int

打印结果为1

f(y,y+1)-------->int f (int n,float m)

1:y(float)-->int,//不过不支持隐转换吧,这应该会出错

int f (int n,float m) { return (m+n)/4;//folat------>int 这里也不一定可以,(int)(m + n)/4; }

转换地方:

1、调用f()的时候,第一个参数需要将浮点数y转换为整形

2、f()内部返回的时候需要将浮点数m转换为整形

打印结果是:1

分析:传输参数的是整形的3和浮点数的4.0

在f()内部,n是3,m是浮点数4.0,当返回的时候m被强制转换为整形4

故返回(4+3)/4,而且是整形的,所以返回了1

即得打印结果1

谢谢采纳!

return (m+n)/4;此处虽然m的值为float,但函数返回值的类型为int,所以返回int型

f(y,y+1)第一个y将转化成int型

printf ("%d\n",f(y,y+1));中的f(y,y+1));中的第一个y被转换成int型

return (m+n)/4;中的m被转换成int型

按照程序的执行顺序来解释吧:

int f (int n,float m) //函数体 { return (m+n)/4;

} int main () //程序入口,开始分析代码 { float y=3; printf ("%d\n",f(y,y+1)); //输出,调用函数 int f(int n,float m),将float类型的 y,强制转换为 int,

//之后进入函数体部分 return 0; }

//改程序最终输出的是:1

^_^

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何获取 java 的泛型中的对象类型
2009-2010NBA賽季
日文CG求翻译
剑侠2有补贴吗
长歌行电视剧经典语录,金星秀有哪些经典语录
武汉市哪有优良银狐仓鼠卖。!!大概多少钱!
关于实况足球2009与10绿茵传奇中的电脑水平
西云我想知道这个在什么地方
建设工程施工管理
里面的古诗词有吗?请写出来.
我和好友聊天怎么老是收不到说的什么
谁可以给4颗QQ音速的种子我啊?
丝路里的英雄殿升到多少还能招募一个英雄招募
求:立德、修身主题班会的流程。
of什么意思
推荐资讯
青花瓷的歌词是什么?
闪乱神乐ev 哪个dlc衣服好看
独木造高楼,没瓦没砖头,人在水下走,水在人
笔记本电脑莫名自动关机,就再也打不开了,怎
介绍了两个相亲对象,男A身高168cm体重80kg家
下蹲后突然起来感觉头晕是怎么的
语文:数学,数字,数字地球---数,无处不在.想写
现在金价是多少
为什么听到亲爱你就什么都不想吃呢?
顾成,亦舒等人的句子
“昨天、今天、明天”请您们有道理的讲解一下
大学毕业设计
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?