【问题标题】:Hello world with only return in main [duplicate]你好世界,只有在主要的回报[重复]
【发布时间】:2013-10-16 21:49:56
【问题描述】:

如何编写满足以下要求的程序:

  1. 打印“Hello world!”到标准输出;
  2. 有空的 main(只返回 0)即

    int main(int argc, char** argv) {
        return 0;
    }
    
  3. main 除上述代码外不得包含其他代码。

【问题讨论】:

  • 欢迎来到 SO。这个想法是您尝试自己解决这个问题,当您遇到特定问题时,您提出问题,显示相关代码。
  • 谷歌搜索“Hello World”C 给了我 37,000,000 次点击。他们都没有用吗?
  • 您可能需要澄清在 main 中不带任何代码打印文本的要求,因为许多人不会发现这一点。
  • @NeilKirk 所以我做到了。我想,我会接受似乎最好的答案,下次会更有建设性。

标签: c++ puzzle


【解决方案1】:

您可以通过不同的方式做到这一点。考虑你有#include <iostream>,那么下面的方法应该放在main之前。

  1. 您可以使用宏,但结果是未定义的,如 cmets 中所述。因此,即使这是一种简单的方法,也不应该使用它。为了完整起见,我仍将其留在这里。

    #define return std::cout << "Hello world!"; return
    
  2. 你可以使用静态变量:

    int helloWorld() 
    { 
        std::cout << "Hello World"; 
        return 0; 
    }
    static int print = helloWorld();
    
  3. ...甚至更简单:

    bool printed = std::cout << "Hello World";
    
  4. 你可以对对象做同样的事情:

    struct hello
    {
        public:
            hello()
            {
                std::cout << "Hello, world!";
            }
    } world;
    

【讨论】:

  • 请注意,选项 1 的行为是未定义的。
  • @PeteBecker,好点,会更新。
【解决方案2】:
struct Bob
{
    Bob()
    {
        printf("Hello world!");
    }
} bob;

int main()
{
}

【讨论】:

    【解决方案3】:
    1. 对象实例化:

      struct S
      {
          S() { std::cout << "Hello World!"; }
      } s;
      
      int main() { }
      
    2. 或者在一个表达式中:

      int i = ((std::cout << "Hello World\n"), 5);
      
      int main() { }
      

    【讨论】:

      猜你喜欢
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多