1.1 Hello World 与编译
程序(program)是一组让计算机解决问题的指令。刚开始学习编程时,最容易误解的一点是:计算机并不会“理解”人类自然语言。即使是“计算一下 1 + 2”这么简单的请求,也必须被写成计算机能执行的明确步骤。
计算机底层处理的是二进制信息,也就是由 0 和 1 表示的数据。编程语言的作用,是把人的想法变成一组结构化、可执行、没有歧义的指令。你写下源代码(source code),C 编译器(compiler)负责检查代码、把它转换成计算机可以运行的程序,并在语法不符合 C 规则时报错。
常见的主流编程语言包括:
- Python:语法简洁,常用于入门编程、数据分析、人工智能、自动化脚本和 Web 后端。
- C:更接近计算机底层,常用于操作系统、嵌入式系统和性能敏感的程序。
- C++:在 C 的基础上支持更多抽象能力,常用于游戏引擎、高性能计算和大型软件系统。
- Java:常用于企业级后端、Android 开发和大型跨平台系统。
- JavaScript / TypeScript:主要用于网页前端,也可以用于后端和全栈开发。
- Go、Rust、C#:分别常见于云服务、系统编程、游戏开发和企业应用等领域。
不同语言的语法、适用场景和学习曲线不同,但它们的共同目标都是把人的想法变成计算机可以执行的明确指令。
什么是程序?
一个程序通常包含四类基本动作:
- 输入(input):从键盘、文件、网络或其他来源获得数据。
- 处理(processing):计算、判断、转换或保存数据。
- 输出(output):把结果显示到屏幕、写入文件,或发送给其他系统。
- 控制流程(control flow):决定哪些步骤先执行、哪些步骤重复执行、哪些步骤在条件满足时才执行。
学习 C 时,不需要一开始就掌握所有复杂语法。更重要的是先建立一个稳定心智:程序是一组清晰步骤,计算机会严格按照这些步骤执行。
流程图
流程图(flowchart)是一种把程序步骤画出来的方法。它适合在写代码之前帮助你看清程序的执行顺序。
下面这个流程图描述了如何计算从 1 到 100 的整数和。注意其中的菱形节点:它代表一次判断。如果条件为真,程序继续累加;如果条件为假,程序输出结果并结束。
计算 1 到 100 的整数和
标准流程图用终止符表示开始/结束,用矩形表示处理步骤,用菱形表示条件判断。
对应到代码时,它大致会变成“初始化变量、循环判断、累加、更新变量、输出结果”这几个动作。
#include <stdio.h>
int main(void) {
int i = 1;
int total = 0;
while (i <= 100) {
total = total + i;
i = i + 1;
}
printf("%d\n", total);
return 0;
}第一个 C 程序
Hello World 通常是学习一门编程语言的第一个程序。它的作用非常单纯:向屏幕输出一段文本。
#include <stdio.h>
int main(void) {
printf("Hello World!\n");
return 0;
}运行结果:
Hello World!这里有五个细节值得马上记住:
#include <stdio.h>引入标准输入输出声明。main通常是 C 程序的入口函数。- 大括号
{}把属于函数的语句组织在一起。 printf()负责输出文本,字符串里的\n表示换行。return 0;表示程序正常结束。
中间那行可以读成:“请调用 printf,把字符串 Hello World! 显示到屏幕上。”
运行 C 代码
很多初学者会在可以一键运行的 IDE 中写 C,例如 Code::Blocks、CLion、Visual Studio、带 C/C++ 扩展的 VS Code、macOS 上的 Xcode,或者在线评测 / 教学环境。在这些工具里,通常创建一个 C 源文件,点击 Run 或 Build,就能在输出面板看到结果。
如果使用终端,可以把文件保存为 hello.c,再用 gcc 编译和运行:
gcc -Wall hello.c -o hello
./hello在 Windows PowerShell 中运行当前目录下的程序通常写成:
.\hello.exe后面的课程会把重点放在 C 语法和问题求解上,默认你已经有 IDE、教学平台或其他一键运行环境来运行示例。
其他语言中的 Hello World
不同语言的 Hello World 写法不同,但核心目的相同:把文本输出到屏幕。对比这些例子可以帮助你看出 C 明确写出了哪些结构。
print("Hello World!")#include <iostream>
using namespace std;
int main() {
cout << "Hello World!" << endl;
return 0;
}public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}在 C、C++、Java 中,程序入口、库引用、类或函数结构更明显。C 还会把编译步骤变成日常流程的一部分,这能帮助你看见源代码如何变成可运行程序。
注释
注释(comment)是写给人看的说明,不会作为程序指令执行。它可以解释代码目的、记录作者信息,或提醒自己某段逻辑的关键原因。
C 中常见的注释方式包括:
- 单行注释:以
//开头,该行后面的内容会被视为注释。 - 多行注释:使用
/* ... */包裹多行文本。
printf("Hello World!\n"); // 输出 "Hello World!"注释不是越多越好。对初学者来说,建议优先注释“为什么这样做”,而不是机械重复“这行代码做了什么”。