求C语言中一题详解
若主调用函数为double型,被调用函数定义中没有函数类型说明,而return语句中的表达式为float型,则被调用函数返回值的类型是________。A)float型B...
若主调用函数为double型,被调用函 数定义中没有函数类型说明,而return语句 中的表达式为float型,则被调用
函数返回值的类型是________。 A)float 型 B)int型 )Cdouble型 D 编译错误
| 展开
函数返回值的类型是________。 A)float 型 B)int型 )Cdouble型 D 编译错误
| 展开
7个回答
展开全部
答案为B
无论你返回什么类型 主调中赋值为什么类型
在你不定义返回类型时 C/C++编译器都会默认为int
测试程序如下
#include <stdio.h>
test()
{
float a = 1;
return a;
}
int main()
{
double k = test();
printf("k = %lf\n", k);
printf("return : %%d=%d %%f:%f\n", test(), test());
}
打印结果为
k = 1.000000
return : %d=1 %f:-0.000000
过程分析
函数test的默认返回值int 所以在返回float型时 实际上做了一个强制转换 即return (int) a;
所以test 的实际返回值为int型 这一点从
printf("return : %%d=%d %%f:%f\n", test(), test());打印上可以看出来
按照%d打印结果正确 按照%f打印错误
而double k = test();实际上是把int型再次做了一次强制转换 即等同于
double k = (double)test();
所以 应该是B才对
展开全部
选A,被调用函数的类型与返回值的类型相同,就是return语句中的表达式类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
默认是int,但是你在外面接的是double,会将返回值转换为double
更多追问追答
追问
主调函数的类型会影响到被调函数的返回值吗
追答
相当于被调函数返回了一个int。
但是你在外面调用的时候,对这个int又作了类型转换,改变的不是被调函数内部的返回值。函数返回的是不受外部调用限制的~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函 数定义中没有函数类型说明默认为int,返回值为float类型,两者不一致!应该选D吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询