6个变态的C语言Hello World程序

当我们学习一门新的编程语言时,最基础的就是编写一个简单的“Hello World”程序。而C语言的“Hello World”程序在使用中可能会涉及到一些变态的写法,下面就来介绍一下六个变态的C语言“Hello World”程序和详细的编写攻略。

1. hello.c中没有main函数

这个程序的奇妙之处在于,它根本没有main函数,却可以输出“Hello, world!”。这是因为在头文件中定义了一个宏,即把main函数改成一个下划线“_”开头的函数,然后在代码中调用这个函数就可以输出了。

#include <stdio.h>
#define main _start

void _start()
{
    printf("Hello, world!\n");
}

2. helloworld.c中有两个main函数

这个程序中有两个同名的main函数,是不是很奇妙?但它同样可以输出“Hello, world!”,这是因为只有一个main函数是程序的入口,而另一个main函数只是一个普通的函数而已。

#include <stdio.h>

int main()
{
    printf("Hello, world!\n");
}

int main(int argc, char **argv)
{
    printf("Hello, world!\n");
}

3. helloworld.c只有一个字符

这个程序只有一个字符,也就是一个字符的字符串,但它同样可以输出“Hello, world!”,这是因为编译器会自动将它作为字符串处理并输出。

main(){puts("Hello, world!");}

4. helloworld.c中的main函数递归调用自身

这个程序中的main函数是递归调用自身的,会一直输出“Hello, world!”直到栈溢出,程序异常退出。

#include <stdio.h>

int main()
{
    printf("Hello, world!\n");
    main();
}

5. 能够输出JavaScript代码的helloworld.c

这个程序的奇妙之处在于,它可以输出JavaScript代码,但最终输出的还是“Hello, world!”。通过在程序开头定义一个JavaScript函数,再输出该函数的调用,就可以实现这个功能。

#include <stdio.h>

char* js = "function hello() { document.write('Hello, world!'); }";

int main()
{
    printf("<script>%s hello();</script>\n", js);
}

6. 使用cow和devil ASCII图案输出hello world的helloworld.c

这个程序使用ASCII码的cow和devil图形输出“Hello World!”,奇妙之处在于它使用了cowsay和devilspie两个程序来实现。

#include <stdio.h>

int main()
{
    system("cowsay -f $(ls /usr/share/cowsay/cows/ | shuf -n1) \"Hello World!\" | pv -qL 10");
    system("devilspie gimp -i --no-new-windows --run '(gimp-quit 0)'");
}

以上就是六个变态的C语言“Hello World”程序的详细攻略,其中指出了每个程序独特的特点和编写的方法,希望能够对初学者有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:6个变态的C语言Hello World程序 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • 简述Java中进程与线程的关系_动力节点Java学院整理

    下面就是对“简述Java中进程与线程的关系_动力节点Java学院整理”的完整攻略,包括以下内容: 1. 进程与线程的基本概念 1.1 进程 进程是指正在运行的程序在内存中的一次执行过程,是程序的一次动态执行过程,并且具有一定的独立性。在Java中,每个Java程序都会启动一个进程,该进程至少包含一个线程。 1.2 线程 线程是进程的一部分,是指进程内部的一个…

    C 2023年5月23日
    00
  • win10快捷方式图标异常怎么办?

    当win10快捷方式图标异常时,可以尝试以下解决方法: 方法一:重新建立图标缓存 按下Win + R键组合键打开运行窗口,输入cmd,按下Ctrl+Shift+Enter组合键,以管理员身份运行命令提示符。 在命令提示符窗口中,输入以下命令并按下回车键:taskkill /f /im explorer.exe。 等待至桌面中的所有图标消失,继续在命令提示符窗…

    C 2023年5月23日
    00
  • js JSON.stringify()基础详解

    js JSON.stringify()基础详解 在JavaScript中,JSON.stringify()方法可以将JavaScript对象转换为JSON字符串。 方法语法 JSON.stringify(value[, replacer[, space]]) value: 要转换成 JSON 字符串的 JavaScript 对象或数组。 replacer(可…

    C 2023年5月23日
    00
  • C/C++ Qt 数据库与ComBox实现多级联动示例代码

    首先,我们要明确一下本文的目标,即通过C/C++ Qt编写代码实现数据库和ComBox的多级联动。下面是实现步骤和示例说明。 步骤一:建立数据库连接 我们需要使用Qt提供的QSqlDatabase类来建立与数据库的连接。在连接前,我们还需要确定数据库的类型和属性,例如,数据库的名称、主机名、用户名、密码等。以下是建立数据库连接的示例代码: QSqlDatab…

    C 2023年5月22日
    00
  • C语言实现学生学籍管理系统程序设计

    C语言实现学生学籍管理系统程序设计 前言 学生学籍管理系统是一款常见的管理软件,它主要用于记录学生的个人信息和学习情况,方便教师和学校管理。C语言是一种常用的计算机编程语言,可以用来编写各种各样的软件,包括学生学籍管理系统。 设计思路 学生学籍管理系统主要包括学生信息和成绩管理两个部分。我们可以采用结构体来存储学生的信息,采用数组来存储学生成绩。具体的设计思…

    C 2023年5月23日
    00
  • C语言中字符串的两种定义方式详解

    C语言中字符串的两种定义方式详解 什么是字符串? 字符串(string)是由一串字符(character)组成的序列,其中每个字符占据一个字节。在C语言中,字符串以null字符(\0)结尾,因此任何一个字符串都都包含了一个null字符。null字符不是可打印字符,而是一个表示字符串结尾的特殊符号。 直接定义字符串 在C语言中,我们可以直接定义一个字符串,定义…

    C 2023年5月23日
    00
  • 代码讲解C++继承和派生

    这里我就来详细讲解一下“代码讲解C++继承和派生”的完整攻略。 1. C++继承 C++中的继承是指从一个类中派生出另一个类,具体实现方式为在派生类的定义中使用“:”后面跟上基类的名称。 1.1 基类和派生类的定义 下面是一个基类的定义: class Shape { public: virtual void draw() = 0; virtual doubl…

    C 2023年5月24日
    00
  • 分享PHP入门的学习方法

    在这里,我会详细讲解如何通过PHP入门学习,以及推荐一些学习资源和方法。 一、为什么学习PHP? 首先让我们了解一下为什么学习PHP。PHP是一种流行的服务器端编程语言,广泛用于Web应用程序开发。随着Web应用程序的快速发展,PHP也变得越来越重要。学习PHP将使您具备创建和维护Web应用程序所需的技能。此外,PHP也很容易学习,并且有众多的学习资源和社区…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部