这个问题在这里已有答案:
我知道有几种方法可以做到这一点。如:
#include <stdio.h>
int main() {
if (printf("Hello"))
return 0;
}
但是,如何通过在返回0后删除分号来执行此操作;还有?考虑到我不能使用void作为main()的返回类型这一事实
即使是下面的这篇文章也忽略了这个事实并且跳过返回0;尽管main()的返回类型是int:https://www.geeksforgeeks.org/write-a-c-program-to-print-geeks-for-geeks-without-using-a-semicolon/amp/
只要main
声明的类型与int
兼容,如果没有明确的return语句,它将在最后一个}
返回0:
C Standard, § 5.1.2.2.3,计划终止:
如果main函数的返回类型是与int兼容的类型,则从初始调用返回main函数等效于调用exit函数,其中main函数返回的值作为其参数;到达终止main函数的}返回值0。
所以这段代码将起作用:
#include <stdio.h>
int main()
{
if(printf("Hello"))
{
}
}
真正的问题是为什么你想要编写一个没有分号的程序。 IOCCC提交通常比这更多涉及。
自C99标准以来,如果return
函数中没有明确的main
语句,则编译器将添加隐式return 0;
。
然后你可以只使用{}
获得空代码块。
把它放在一起它可能是这样的
#include <stdio.h>
int main(void)
{
if (printf("Hello\n"))
{
}
}