【发布时间】:2018-10-10 11:43:18
【问题描述】:
代码正在编译 evan,尽管 main 的返回类型为 int,但它可以与返回类型字符串一起使用,并且错误是什么原因造成的。
#include <stdio.h>
int main()
{
int i=0;
printf("Hello World");
//if(i!=0)
return "hai";
return 0;
}
【问题讨论】:
-
"hai"返回一个const char*,可以转换为int。不过,我认为它至少需要在 c++ 中进行显式转换。 -
它在 C 中编译,但并非没有警告:godbolt.org/z/fIQzVv
-
@Blaze: "hai" 的类型为
char[4],并在return语句的上下文中转换为char*,没有const -
这根本不是有效的 C。从
char *到int没有隐式转换。这是违反约束的。 -
如果你想阻止无效的C代码在gcc中编译,你必须用
-pedantic-errors编译。