我正在使用Visual Studio 2008。
对于下面的代码

double main()
{
}

我收到错误消息:



但是如果我使用下面的代码
char main()
{
}

没有错误。
运行并退出后,显示输出窗口



问题:编译器是否从默认返回值零(整数)隐式转换为char?

代码0xcccccc00是如何生成的?

看起来该代码中的最后一个字节似乎是实际的返回值。为什么0xcccccc来了?

最佳答案

您第一个问题的答案是肯定的。 char本质上是非常小的整数类型,因此(极端)宽松的编译器。 Double不是可接受的,因为它不是整数类型。 0xCCCCCC是从未初始化的内存(出于调试目的除外)。由于ASCII字符只能有两个十六进制数字,因此转换根本无法设置前24位(并且仅将后8位设置为0)。多么奇怪和令人讨厌的编译器技巧。

08-16 00:41