我正在使用Visual Studio 2008.对于下面的代码
double main()
{
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
错误C3874:'main'的返回类型应为'int'而不是'double'
但如果我使用下面的代码
char main()
{
}
Run Code Online (Sandbox Code Playgroud)
没有错误.运行并退出输出窗口后显示
程序'[5856] test2.exe:Native'已退出,代码为-858993664(0xcccccc00).
问题:编译器是否从默认返回值零(整数)到char进行隐式转换?
如何生成代码0xcccccc00?
看起来该代码中的最后一个字节似乎是实际的返回值.为什么0xcccccc即将到来?
根据C++标准,正确的方法是:
int main()
{
...
}
Run Code Online (Sandbox Code Playgroud)
不要将返回类型更改为其他任何内容,否则您的代码将不是C++,而您只是在使用编译器特定的功能.您的示例中的那些ccccc值只是返回的单位化字节(C分配器设置为0xCC).