c++问题,调用有返回值和没有返回值的函数,为什么不同呢?

#include<iostream>
void show()
{
std::cout<<"hello world";
}
int main()
{
std::cout<<show();
return 0;
}
和下面的函数有什么区别?为什么有这个区别?
#include<iostream>
int show()
{
std::cout<<"hello world";
return 111;
}
int main()
{
std::cout<<show();
return 0;
}

一个函数的函数名既是该函数的代表,也是一个变量。由于函数名变量通常用来把函数的处理结果数据带回给调用函数,即递归调用,所以一般把函数名变量称为返回值

函数可以有返回值,也可以没有返回值。对于没有返回值的函数,功能只是完成一个操作,而不能返回运算的结果。对于没有返回值的函数,功能不仅是完成一个操作,还能返回运算的结果,功能更加强大。

例如:

void funcplus(int a,int b)
{
    a+b;
}
int funcplusRet(int a,int b)
{
    retutn a+b;
}

如上所示:funcplus只完成了 a+b的运算,结果没有返回,所以我们得不到计算的结果。

funcplusRet,完成了a+b的运算,并且返回了结果,我们可以获得结果。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-02
根据你的这两个程序来说的话没什么区别,函数需不需要返回值要适情况而定的。比如说当你在调用一个函数之后要确认它是否调用成功,那你就可以用一个int 或者 bool 型作为返回类型。然后在调用处进行判断。而如果不需要确认是否调用成功,又不需要用到被调用函数里面的变量,那返回类型就可以是void 。 这样说可以理解吗??哈。。。来自:求助得到的回答
第1个回答  2013-03-02
#include<iostream>
void show()
{
std::cout<<"hello world";
}
int main()
{
std::cout<<show();
return 0;
}
//这个能运行吗?std::cout<<show();显示的是show()运行之后返回的值,函数show()运行之后没有返回任何值,因此能显示什么?追问

那个不能运行,如果这么改呢:
#include
int show()
{
std::cout<<"hello world";
return 111;
}
int main()
{
std::cout<<show();
return 0;
}
那std::cout<<show();显示的不仅仅只有show()运行之后的返回值,还有 "hello world",这是为什么?

追答

先调用show(),显示"hello world"。然后show()运行完毕,回到main函数,显示函数show()返回的值,即111……

追问

那程序应该是先判断被调用的函数是否有返回值,如果有,则显示过“hello world”,再显示“111”;如果没有返回值,则语法错误。是这样吗?

追答

实际上是编译器在产生程序的二进制码时候先判断被调用的函数是否有返回值,如果没有返回值,则报告“语法错误”,可能还会停止编译;否则就把程序的二进制码写成先调用函数show(在函数内部的代码被编译成显示“hello world”的二进制码),然后根据show函数的返回值的类型,以一定的格式显示show函数的返回值
而在程序运行的时候只是照着编译好的二进制码做而已

本回答被提问者采纳
第2个回答  2013-03-02
有返回值的函数可以赋值给一个变量。
没返回值的函数不能赋值给一个变量。追问

那赋值变量和不赋值变量,对于调用来说,有什么区别呢?

追答

对调用来说没区别。
只是没返回值的函数是不能赋值而已,有返回值的随你用不用

第3个回答  2013-03-28
#,包括
无效的show()

{

的std :: cout <<“请你好世界”;}

廉政的main()

{

std :: cout的<<显示();

返回0;

}
/ /这可以跑你吗? std :: cout的“show()方法,显示了show()执行后的返回值的函数show()方法来运行不返回任何值,并因此能够证明什么呢?
相似回答