代码正在编译evan,虽然main的返回类型为int,它与返回类型字符串一起使用而没有错误,它背后的原因是什么.
#include <stdio.h>
int main()
{
int i=0;
printf("Hello World");
//if(i!=0)
return "hai";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该程序是一个无效的 C程序."hai"具有类型,char [4]并在return语句的上下文中衰减char *.
但是该功能需要返回int.在return这种情况下,如果通过分配.
A char *可以转换为int但需要显式转换.在没有显式强制转换的情况下,它是违反约束的,并且编译器必须生成诊断消息,其gcc执行:
warning: return makes integer from pointer without a cast [-Wint-conversion]
return "hai";
^~~~~
Run Code Online (Sandbox Code Playgroud)
最后:C标准在脚注中提到:
[符合实施]也可以成功翻译无效的程序.
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |