专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

关于函数返回解决方案

发布时间:2011-06-28 16:18:39 文章来源:www.iduyao.cn 采编人员:星星草
关于函数返回
在一个函数的声明中,它的返回值类型A,但它的函数体内包含了一个return语句,返回了一个类型为B的表达式。请问这会导致什么结果?

如果一个表达式声明为void类型,但它的函数体内包含了一个return语句,并且返回一个表达式。请问这会导致一个什么结果?


------解决方案--------------------
一般是编译不过,但有的编译器只是警告,这种情况下返回值被编译器忽略掉,所以不会照成什么影响
------解决方案--------------------
其实这些你可以自己动手去写写看看。一般是编译就会报错或报警告。
C/C++ code

int fun()
{
    if (1)
    {
        return true;
    }
    else
    {
        return 'a';
    }
    return 4;
}
void fun()
{
    return 3+2;

};

------解决方案--------------------
呃,在C语言里面,要是在c++中就要分基类和派生类了

在C里面,也要看类型提升,比如int提升到double,如果你return的是int,外面返回值是double,那么应该不会发出警告,反之会有类型缺损的警告

还有 如果你返回的是一个结构体对象,而外面是一个元类型,如int等,那样就会报错,指针一样,具体你自己去试试
------解决方案--------------------
要看编译器是否为你这个类型提供了隐式转换吧??
------解决方案--------------------
1.
如果是纯C编译,可以编译通过(因为C是不作类型检查的)
如果是C++编译,一般不能通过,除非用强制转换,或类型是可隐式转换的,函数为int,它返回char
2.
如果是纯C编译,可以编译通过(多数编译器会有Warning)
如果是C++编译,肯定不过

------解决方案--------------------
一般会隐式转换成你声明的返回值(如果你提供了函数原型)
------解决方案--------------------
探讨
其实这些你可以自己动手去写写看看。一般是编译就会报错或报警告。

C/C++ code


int fun()
{
if (1)
{
return true;
}
else
{
return 'a';
}
return 4;
}
void fun()
{
retur……

------解决方案--------------------
探讨
1.
如果是纯C编译,可以编译通过(因为C是不作类型检查的)
如果是C++编译,一般不能通过,除非用强制转换,或类型是可隐式转换的,函数为int,它返回char
2.
如果是纯C编译,可以编译通过(多数编译器会有Warning)
如果是C++编译,肯定不过

------解决方案--------------------
自己试一试啊
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: