【发布时间】:2011-04-25 11:42:10
【问题描述】:
我正在使用 Visual Studio 2008。 对于下面的代码
double main()
{
}
我得到错误:
错误 C3874:'main' 的返回类型 应该是“int”而不是“double”
但是如果我使用下面的代码
char main()
{
}
没有错误。 运行退出后输出窗口显示
程序'[5856] test2.exe: Native' 已退出,代码为 -858993664 (0xcccccc00)。
问题:编译器是否正在从默认返回值零(整数)隐式转换为字符?
代码 0xcccccc00 是如何生成的?
看起来该代码中的最后一个字节似乎是实际的返回值。为什么0xcccccc来了?
【问题讨论】:
-
不管你的问题是什么,都不要改变main的返回值。只是不要这样做!
-
这真的是作业吗?
-
@John:是的。尝试了解更多信息。
-
如果您让 main() 返回其他类型而不是 int,则行为未指定。这意味着每个编译器都可能产生不同的输出,甚至如您所见的错误。
-
-1 表示又一个无用的“为什么这有效?”/“为什么这不会给出错误?”对于未定义的行为。