如何在不使用分号的情况下在C中打印“Hello”? [重复]

问题描述 投票:-1回答:2

这个问题在这里已有答案:

我知道有几种方法可以做到这一点。如:

#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/

c
2个回答
5
投票

只要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提交通常比这更多涉及。


4
投票

自C99标准以来,如果return函数中没有明确的main语句,则编译器将添加隐式return 0;

然后你可以只使用{}获得空代码块。

把它放在一起它可能是这样的

#include <stdio.h>

int main(void)
{
    if (printf("Hello\n"))
    {
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.