C语言入门:从基础语法到你的第一个“Hello World”

C语言入门:从基础语法到你的第一个“Hello World”

C语言以其高效和强大而闻名,是许多编程语言的基础。理解其基本语法是迈向精通的第一步。本篇博客将带你快速了解C语言的核心语法概念,包括语句、表达式、代码块、空格、注释,并详细介绍如何使printf()函数进行输出。

一、语句:程序的基石

C语言程序由一条条语句构成,每个语句都是一条执行指令。语句必须以分号;结尾。

C
1
int x = 1; // 这是一个声明并赋值的语句
  • 多语句一行:多个语句可以写在同一行,但通常为了可读性会分行书写。
    C
    1
    int x; x = 1; // 两个语句在一行
  • 单语句多行:一个语句也可以跨越多行,编译器会忽略换行符,直到遇到分号才认为语句结束。
    C
    1
    2
    3
    4
    5
    int x;
    x
    =
    1
    ; // 这是一个完整的语句
  • 空语句:单独的一个分号;也是一个有效的语句,称为“空语句”,它不执行任何操作。

二、表达式 vs. 语句

表达式是一个用于计算的公式,它总会产生一个值。例如 1 + 2 就是一个表达式,其值为 3

当表达式后面加上分号,它就变成了一个表达式语句。但并非所有有意义的表达式作为语句都有意义。

C
1
2
8;        // 表达式语句,值为8,但无实际作用
3 + 4; // 表达式语句,值为7,但无实际作用

主要区别

  1. 包含关系:语句可以包含表达式,但表达式本身不构成语句(除非加分号)。
  2. 返回值:表达式始终有返回值;语句不一定需要,它的核心目的是执行动作(如变量声明)。

三、语句块:将代码打包

使用大括号 {} 可以将多条语句组合成一个语句块(或称为复合语句)。在语法上,整个语句块被视为一个单一的单元。

C
1
2
3
4
{
int x;
x = 1;
} // 语句块结束,不需要分号

语句块在控制流语句(如 iffor)中至关重要,用于定义执行范围。

四、空格与缩进:为了可读性

空格(包括空格、制表符、换行符)主要用于帮助编译器区分语法单位。只要编译器能区分,空格就不是必须的,但它对人类阅读代码至关重要

  • 可选空格int x=1;int x = 1; 是等价的。
  • 多个空格等同单个int x = 1; 中的多个空格与单个空格效果相同。
  • 缩进:缩进(通常是4个或2个空格)不是语法要求,但能清晰展示代码结构层次。
    C
    1
    2
    3
    4
    // 缩进四个空格
    if (x > 0) {
    printf("positive\n"); // 属于if的代码块
    }

五、注释:代码的笔记

注释用于解释代码,编译器会完全忽略它们。C语言有两种注释方式:

  1. 多行注释:位于 /**/ 之间,可以跨行。

    C
    1
    2
    3
    /* 这是一个
    多行注释 */
    int open(char* s /* 文件名 */, int mode); // 行内注释

    警告:务必成对使用,否则 /* 之后的所有代码都可能被注释掉!

  2. 单行注释:以 // 开始,到行尾结束。这是C99标准新增的。

    C
    1
    2
    // 这是一个单行注释
    int x = 1; // 这也是注释

重要:注释符号在双引号内会失去作用,成为字符串的一部分。printf("// hello /* world */"); 会原样输出 // hello /* world */

六、printf() 函数:与世界打招呼

printf() 是用于向屏幕输出文本的标准库函数,其名字中的 f 代表“格式化”(format)。

1. 基本用法

C
1
2
3
4
5
6
7
#include <stdio.h> // 必须包含头文件

int main(void) {
printf("Hello World"); // 输出后不换行
printf("Hello World\n"); // 输出后换行,\n是换行符
printf("Hello\nWorld\n"); // 输出两行:Hello 和 World
}

2. 占位符
占位符允许我们将值嵌入到输出文本中,它以百分号 % 开头。

  • %d%i:整数。
  • %s:字符串。
  • %f:浮点数(小数)。
C
1
2
printf("%s has %d apples.\n", "Alice", 3);
// 输出:Alice has 3 apples.

注意:占位符的数量必须与后面提供的参数数量一致。

3. 输出格式控制
printf() 可以精细控制输出格式。

  • 限定宽度%5d 表示最小宽度为5位,不足位用空格填充(默认右对齐)。%-5d为左对齐。
    C
    1
    2
    printf("%5d\n", 123); // 输出 "  123"
    printf("%-5d\n", 123); // 输出 "123 "
  • 显示正负号%+d 使正数也显示 + 号。
    C
    1
    printf("%+d\n", 12); // 输出 +12
  • 限定小数位数%.2f 保留两位小数。
    C
    1
    printf("Number is %.2f\n", 0.5); // 输出 Number is 0.50
    可以组合使用:%6.2f(最小宽度6,两位小数)。

七、标准库与头文件

printf() 等功能并非C语言核心语法的一部分,而是由标准库提供的。标准库是C语言官方提供的一套常用功能集合。

这些功能被声明在头文件(如 stdio.h)中。要使用某个功能,就必须先用 #include 指令引入其对应的头文件。

C
1
#include <stdio.h> // 引入标准输入输出头文件,这样才能使用printf()

总结

掌握这些基础语法,你就已经打开了C语言编程的大门。记住:

  • 语句是动作,用分号结束。
  • 表达式是计算,产生值。
  • 代码块{} 组合语句。
  • 空格和缩进是为了让人看得舒服。
  • 注释是为了解释代码。
  • printf() 是你的输出工具,功能强大。
  • 头文件是使用标准库功能的钥匙。

现在,尝试在你的开发环境中编写并运行一个简单的 printf 程序吧!


C语言入门:从基础语法到你的第一个“Hello World”
https://www.edenzeng.online/2015/10/05/0.技术栈/01.开发语言/01.C语言/01-基本语法/
作者
Edenzeng
发布于
2015年10月5日
许可协议