main()返回一个整数? 我目前正在阅读C++中的函数。它说它们是“使您能够将应用程序的内容划分为功能单元的构件,这些功能单元可以按照您选择的顺序调用。调用函数时,通常会向调用函数返回一个值。” 然后继续说,MIN()被编译器识别为C++应用程序的起点,并且必须返回int(整数)。
我不知道“必须返回整数”是什么意思。根据我(extrementlimited)的经验,int main()是应用程序的开始。但是“必须返回一个int”是什么意思呢?。这也与我不理解“通常向调用函数返回一个值”交织在一起。是的,main()返回一个整数? 我目前正在阅读C++中的函数。它说它们是“使您能够将应用程序的内容划分为功能单元的构件,这些功能单元可以按照您选择的顺序调用。调用函数时,通常会向调用函数返回一个值。” 然后继续说,MIN()被编译器识别为C++应用程序的起点,并且必须返回int(整数)。,c++,main,C++,Main,我不知道“必须返回整数”是什么意思。根据我(extrementlimited)的经验,int main()是应用程序的开始。但是“必须返回一个int”是什么意思呢?。这也与我不理解“通常向调用函数返回一个值”交织在一起。是的,main应该总是返回一个int,这可以用来显示程序是否成功运行,通常0表示成功,非零值表示某种失败 例如,在Linux中,您可以在bash脚本中调用程序,在此脚本中,对程序的返回状态运行不同的命令。这意味着,在main()的签名中,返回类型是int: int main();
main
应该总是返回一个int
,这可以用来显示程序是否成功运行,通常0
表示成功,非零值表示某种失败
例如,在Linux中,您可以在bash脚本中调用程序,在此脚本中,对程序的返回状态运行不同的命令。这意味着,在
main()
的签名中,返回类型是int
:
int main();
int main(int argc, char const *argv[]);
#include <cstdlib>
#include <iostream>
int foo()
{
return 42;
}
int main()
{
int answer = foo();
std::cout << "The answer to Life, the Universe and Everything is...\n"
<< answer << "!\n";
return 0;
}
现在的问题是,您将从main()
返回什么值。返回值实际上是退出状态,它向运行时指示main()
执行成功还是失败
在Linux中,我通常根据情况返回EXIT\u SUCCESS
或EXIT\u FAILURE
。这些是由
定义的宏
根据:
EXIT_SUCCESS和EXIT_FAILURE宏扩展为一个整数表达式,并指示程序执行状态
Constant Explanation
EXIT_SUCCESS successful execution of a program
EXIT_FAILURE unsuccessful execution of a program
<>虽然在C或C++编程时可能出现,
$?
,因此在运行程序后,您可以echo$?
查看“结果”是什么-0表示“顺利”,其他值用于“失败”。在windows中,批处理脚本等中有一个ERRORLEVEL
变量,可用于查看最后一个命令的结果
编辑:如果您的代码调用另一个程序,例如通过Windows中的CreatProcess,或Unix风格操作系统中的fork()/exec()
(或几乎任何操作系统中的C运行时函数spawn
和同级),则main
的返回值是新进程完成并可用于所属进程。结束编辑
因为,即使在C++中,<>代码>主< /C>是一个“C”样式的函数,如果你改变了返回类型,它仍然有相同的名字,所以链接器/编译器不能“检测”它有错误的返回类型,如果你声明“代码>Valuy主())/代码>,<代码> STD::String主()/<代码>或<代码>浮点主(),就会出现一些奇怪的东西。
int foo();
void bar();
string baz();
int main();
4函数声明<代码> Foo< /Calp>返回<代码> int <代码>,代码> bar >代码>返回任何内容,<代码> BAZ返回<代码>字符串(在C++标准库中声明),<代码>主< /COD>返回INT.<
每个函数不仅必须声明它返回的内容,还必须返回该类型的内容。如果函数返回void
,则可以编写:
void bar()
{
return;
}
…或者什么都不做:
void bar()
{
}
如果函数返回的不是void
,则必须有一个return
语句返回该类型的内容:
int foo()
{
return 42;
}
如果您声明一个函数来返回一种类型的东西,但又试图返回另一种类型的东西,那么必须有一种方法来隐式地将您试图转换的东西转换为函数声明要返回的东西。如果没有可能的隐式转换,您的程序将无法编译。考虑:
int foo()
{
return "foobar rulez!";
}
int main()
{
}
在这里,foo
被声明为返回一个int
,但我试图返回一个字符串(不是标准库中的string
,而是一个旧的C样式const char*
字符串。“foobar rulez!”这里被称为字符串文本。)
编写代码来提供我前面提到的隐式转换是可能的,但是除非您确切知道为什么要这样做,否则最好不要现在就卷入其中
如何处理函数返回的值?同样,就像数学一样,您可以在程序的其他地方使用这些值
#include <cstdlib>
#include <iostream>
int foo()
{
return 42;
}
int main()
{
int answer = foo();
std::cout << "The answer to Life, the Universe and Everything is...\n"
<< answer << "!\n";
return 0;
}
好的,回到
main
的所有业务
<代码>主<代码>是C++中的函数。有一些关于
main()
(在全局范围内)的函数int
#include <cstdlib>
#include <iostream>
int theAnswer = 0;
void DeepThought()
{
theAnswer = 42;
}
int foo()
{
return theAnswer;
}
int main()
{
DeepThought();
int answer = foo();
std::cout << "The answer to Life, the Universe and Everything is...\n"
<< answer << "!\n";
return 0;
}
int main()
{
}
echo $?