C 入门第一课:Hello World、变量与基本数据类型
C 语言诞生于 1972 年,到现在依然是操作系统、嵌入式开发的主力语言。很多高校的编程第一课就用它,因为它足够贴近底层,能让你真正看懂程序是怎么跑起来的。这篇就带你写出第一个 C 程序,认识变量和基本数据类型。
第一个程序:Hello World
学任何语言的第一步都是跟世界打招呼。新建一个 hello.c 文件,输入下面的代码:
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}
编译并运行(以 gcc 为例):
gcc hello.c -o hello
./hello
输出:
Hello, World!
简单解释一下:#include <stdio.h> 引入标准输入输出库,printf 就住在里面;main 函数是程序的入口,C 程序总是从这里开始执行;\n 是换行符;return 0 表示程序正常结束。
变量:给数据找个盒子
变量就像贴了名字的盒子,用来存放数据。C 是静态类型语言,变量用之前必须先声明类型:
#include <stdio.h>
int main(void) {
int age = 20; // 整数
double price = 9.9; // 双精度浮点数
char grade = 'A'; // 单个字符,用单引号
printf("age = %d\n", age); // 输出:age = 20
printf("price = %.1f\n", price); // 输出:price = 9.9
printf("grade = %c\n", grade); // 输出:grade = A
return 0;
}
注意格式说明符要和变量类型一一对应:%d 对应 int,%f 对应 double(%.1f 表示保留 1 位小数),%c 对应 char。类型对不上,输出就会乱码。
常用的基本数据类型
C 的基本数据类型主要有这几类:
| 类型 | 用途 | 典型大小 |
|---|---|---|
| int | 整数 | 4 字节 |
| float | 单精度浮点数 | 4 字节 |
| double | 双精度浮点数 | 8 字节 |
| char | 字符 | 1 字节 |
类型占几个字节,不同平台可能有差异,想知道确切答案,用 sizeof 一测便知:
#include <stdio.h>
int main(void) {
printf("int 占 %zu 字节\n", sizeof(int)); // 输出:int 占 4 字节
printf("double 占 %zu 字节\n", sizeof(double)); // 输出:double 占 8 字节
printf("char 占 %zu 字节\n", sizeof(char)); // 输出:char 占 1 字节
return 0;
}
读入用户的输入
程序要能交互,就得会读输入,scanf 是最常用的输入函数:
#include <stdio.h>
int main(void) {
int a, b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
printf("%d + %d = %d\n", a, b, a + b); // 输入 3 和 5 时输出:3 + 5 = 8
return 0;
}
&a 里的 & 是取地址符,scanf 需要知道变量放在内存的哪个位置,才能把读到的值写进去——这正是指针登场的地方,后面会细讲。
简单算术运算
变量声明好了,就能做运算:
#include <stdio.h>
int main(void) {
int a = 7, b = 2;
printf("%d\n", a + b); // 输出:9
printf("%d\n", a / b); // 输出:3(整数除法会丢掉小数部分)
printf("%d\n", a % b); // 输出:1(取余数)
printf("%.2f\n", 7.0 / 2); // 输出:3.50(至少一边是小数才是小数除法)
return 0;
}
a / b 得到 3 而不是 3.5,是新手最容易踩的坑:两个整数相除,结果还是整数,小数部分直接被扔掉。
小结
这篇我们完成了三件事:写出并运行第一个 C 程序;学会声明变量并用 printf 输出;认识了 int、double、char 等基本类型,还会用 scanf 读输入。C 的关键词不多,但每一步都离内存更近一点,下一篇我们聊聊函数与头文件。