回答
是的。根据C标准,主()应该返回一个int
值。但不是必须。
也许它更像是一种传统的东西。如果一个应用程序可能返回一个char [],int []等等,这将会让人困惑...... – Warty 2010-05-23 06:43:55
@ItzWarty:你*不能*返回一个char []或者int []或者除了原始数据类型以外的任何东西。它的内存将被存储?这些是指针,他们指向*某处*。如果程序已被销毁,这个数组将被存储在哪里? – 2010-05-23 07:03:00
@Comp,操作系统允许您将从main返回的char [] []复制到父进程中是完全可行的。这在将int返回代码传递回父节点(不同的存储需求但是完全相同的方法)中没有区别。 – paxdiablo 2010-05-23 07:26:31
我不知道这是什么意思,如果main
返回加倍。反正这里是用gcc会发生什么:
double main()
{
return 0.0;
}
$ cc double.c double.c: In function 'main': double.c:2: warning: return type of 'main' is not 'int' $ ./a.out $ echo $? 255 $
什么是$?在这之后? – 2010-05-23 06:47:13
@Precision:注意到 – 2010-05-23 06:55:12
@Snake Plissken:非常有趣。我想知道这是为什么。 – 2010-05-23 07:12:14
命名主要充当程序的托管执行的C必须返回一个int的入口点函数。有可能写一个a名为'main'的函数返回一个double。要做到这一点,你要把它变成静态的,然后你给自己买一件防弹背心,并且可能雇用一些武装警卫;如果有人要维护这样的怪物,你就需要它们。
从C99
5.1.2.2.3计划终止 如果主函数的返回类型为int一个 类型兼容,从最初的调用的返回 到主 功能等同于调用带值的 出口功能由主函数作为其 参数返回 ; 10)到达}中 终止。如果返回类型不是 兼容无线主函数返回0 值日INT,终止 状态返回到主机 环境是不确定的
参考这里 - 5.1.2.2.3计划终止 http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf
如果你是在托管环境(即通常在PC)返回值类型是固定的,如前所述。如果在独立环境中运行,您可以返回不同的值类型。由于没有操作系统(您可以创建一个直接在硬件上运行的大型二进制文件),因此在为微控制器编程时通常会出现独立环境。但是,在这种情况下,主要的通常原型是void main(void)
。
但是返回不同的类型如double
有什么意义?除非调用者(即操作系统)可以用返回值做某件事情,否则毫无意义,并且由于调用者无法知道返回值的类型,所以必须修复它。
C说它非常好。另一方面,POSIX需要0到255之间的整数。通常,main()
应返回值EXIT_SUCCESS
或EXIT_FAILURE
,除非专门设置了一个状态,该状态不是但仍在0 - 255之间以使状态有意义。
例如,返回114可能会告诉调用初始化脚本有关可通过脚本纠正的某些情况。
如果在POSIX OS下,您尝试从main()
返回3.14
,调用进程几乎总是会看到255
。
我不确定其他操作系统,但一般情况下 - C可以让你逃避的东西并不总是与操作系统本身允许你放弃的东西一致:)这完全不是POSIX特有的。
- 1. 函数中可以返回double *吗?
- 2. 我可以为矢量<double>函数返回NULL吗?
- 3. STUFF函数可以返回NULL值吗?
- 4. VBScript函数可以返回字典吗?
- 5. jQuery - show()函数可以返回true吗?
- 6. main()返回其值吗?
- 7. c void main函数?返回16值
- 8. 从java函数返回double和int值
- 9. C++从函数返回double或int
- 10. 一个函数可以返回一个数组吗?
- 11. Ruby函数可以检测请求返回值的数量吗?
- 12. 可以用PHP数组返回一个函数吗?
- 13. PostgreSQL可以从函数返回的数组中选择吗?
- 14. 构造函数可以返回java中的数据类型吗?
- 15. 我可以使用两个整数参数在函数中返回double或float吗?
- 16. ServiceLocator.Current.GetInstance可以返回null吗?
- 17. getBestProvider可以返回null吗?
- 18. 我可以避免返回函数的模板返回类型吗?
- 19. 从函数返回之前,可以通过powershell获得返回值吗?
- 20. 你可以在scala中返回一个未评估函数吗?
- 21. 我可以在带返回的函数中使用URLSession吗?
- 22. 我可以从LotusScript函数返回一个列表吗?
- 23. 我可以从表值函数返回外键列吗?
- 24. 我可以提取函数返回值吗?
- 25. R中的函数可以返回两个向量吗?
- 26. 对象构造函数可以返回null吗?
- 27. OpenCL内联函数可以返回OpenCL类型吗?
- 28. PHP函数可以返回很多变量吗?
- 29. 我可以在void函数中返回吗?
- 30. Dapper可以从SQL函数中返回值吗?
我必须问,为什么downvote?这是一个完全合法的问题。 +1。 – Warty 2010-05-23 06:39:26
Dupe http://stackoverflow.com/questions/204476/what-should-main-return-in-cc – 2010-05-23 10:05:58
另请参阅 - https://softwareengineering.stackexchange.com/questions/203104/why-cant-main-return -a-double-or-string-rather-int-or-void – roottraveller 2017-09-11 11:18:53