在一个函数的声明中,它的返回值类型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++编译,肯定不过
------解决方案--------------------
一般会隐式转换成你声明的返回值(如果你提供了函数原型)
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
自己试一试啊