暂时无法在飞书文档外展示此内容
1、C 实例 – Hello World
#include <stdio.h> //头文件
//空白行
/* 我们的第一个 C 程序 */ //注释
int main() //函数
{ //函数体开始
printf("Hello, World! \n"); //输出语句
return 0; //结束并返回语句
} //函数体结束
2、基本组成单位 – 令牌
在 C 语言中,令牌(Token)是程序的基本组成单位,编译器通过对源代码进行词法分析,将代码分解成一个个的令牌
。
C 语言的令牌主要包括以下几种类型:
- 分隔符(Separators)
- 标识符(Identifiers)
- 字面值常量(Constants)
- 运算符(Operators)
- 关键字(Keyword),又称为 保留字
- 其它符号
2.1、分隔符
分隔符用于分隔语句和表达式
,常见的分隔符包括:
- 逗号(,):用于
分隔变量声明或函数参数
。 - 分号(;):用于
结束语句
。 - 括号:
- 圆括号(())用于
分组表达式、函数调用
。 - 花括号({})用于
定义代码块
。 - 方括号([])用于
数组下标
。
- 圆括号(())用于
注意 1:
在 C 程序中,分号 ; 是语句结束符,也就是说,
每个语句必须以分号结束
,它表明一个逻辑实体的结束。
例如,下面是两个不同的语句:
printf("Hello, World! \n");
return 0;
个单独的分号也可以作为一个空语句,表示什么都不做
。例如:
;
注意 2:
C 中只包含空格的行,被称为空白行,C 编译器会完全忽略它。
在 C 中,空格
用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。
比如,在下面的语句中:
int age;
在这里,int 和 age 之间必须至少有一个空格字符(通常是一个空白符),这样编译器才能够区分它们。
2.2、标识符
- 标识符是程序中变量、函数、数组等的名字。
- 标识符由字母(大写或小写)、数字和下划线组成,但
第一个字符必须是字母或下划线,不能是数字
。 - 以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。
- 标识符对大小写敏感,即严格区分大小写。一般对变量名用小写,符号常量命名用大写。(注:C 语言中字母是区分大小写的,因此 score、Score、SCORE 分别代表三个不同的标识符)
- C 标识符内不允许出现标点字符,比如 @、$ 和 %。C 是区分大小写的编程语言。下面列出几个有效的标识符:
a_123 myname50 _temp RetVal
2.3、常量
定义:固定值,分为整常量、浮点常量、字符常量和字符串常量。
例子:
- 整数常量:100
- 浮点常量:3.14
- 字符常量:‘A’
- 字符串常量:“Hello, World!”
2.4、运算符(Operators)
运算符用于执行各种操作,如算术运算、逻辑运算、比较运算等。
C 语言中的运算符种类繁多,常见的包括:
- 算术运算符:+, -, *, /, %
- 关系运算符:==, !=, >, <, >=, <=
- 逻辑运算符:&&, ||, !
- 位运算符:&, |, ^, ~, <<, >>
- 赋值运算符:=, +=, -=, *=, /=, %=
- 其他运算符:sizeof, ?:, &, *, ->, .
2.5、关键字
下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。
关键字 | 说明 |
---|---|
auto | 声明自动变量 |
break | 跳出当前循环 |
case | 开关语句分支 |
char | 声明字符型变量或函数返回值类型 |
const | 定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变 |
continue | 结束当前循环,开始下一轮循环 |
default | 开关语句中的"其它"分支 |
do | 循环语句的循环体 |
double | 声明双精度浮点型变量或函数返回值类型 |
else | 条件语句否定分支(与 if 连用) |
enum | 声明枚举类型 |
extern | 声明变量或函数是在其它文件或本文件的其他位置定义 |
float | 声明浮点型变量或函数返回值类型 |
for | 循环语句 |
goto | 无条件跳转语句 |
if | 条件语句 |
int | 声明整型变量或函数 |
long | 声明长整型变量或函数返回值类型 |
register | 声明寄存器变量 |
return | 子程序返回语句(可以带参数,也可不带参数) |
short | 声明短整型变量或函数 |
signed | 声明有符号类型变量或函数 |
sizeof | 计算数据类型或变量长度(即所占字节数) |
static | 声明静态变量 |
struct | 声明结构体类型 |
switch | 用于开关语句 |
typedef | 用以给数据类型取别名 |
unsigned | 声明无符号类型变量或函数 |
union | 声明共用体类型 |
void | 声明函数无返回值或无参数,声明无类型指针 |
volatile | 说明变量在程序执行中可被隐含地改变 |
while | 循环语句的循环条件 |
C99 新增关键字:
1999 年 12 月 16 日,ISO 推出了 C99 标准,该标准新增了 5 个 C 语言关键字:
_Bool | _Complex | _Imaginary | inline | restrict |
---|---|---|---|---|
C11 新增关键字:
2011 年 12 月 8 日,ISO 发布 C 语言的新标准 C11,该标准新增了 7 个 C 语言关键字:
_Alignas | _Alignof | _Atomic | _Generic | _Noreturn | _Static_assert | _Thread_local |
---|---|---|---|---|---|---|
2.6、其它符号
2.6.1、注释
1. 什么是注释?
- 注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。
- 注释是给程序员⾃⼰,或者其他程序员看的。
- 好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释。
2. C 语言有两种注释方式
(1) //
的形式
- 将注释放在双斜杠 // 后⾯,从双斜杠到⾏尾都属于注释。
- 这种注释只能是单⾏,可以放在⾏⾸,也可以放在⼀⾏语句的结尾。
- 这是
C99
标准新增的语法。
// 单行注释
(2) /\* \*/
的形式
- 这种格式的注释可以单行或多行。
- **注意:**这种注释⼀定不能忘记写结束符号 */ ,否则很容易导致错误。
- **注意:**您不能在注释内嵌套注释,注释也不能出现在字符串或字符值中。
/* 单行注释 */
/*
多行注释
多行注释
多行注释
*/
2.6.2、注释编译时是什么样的?
编译时,注释会被替换成⼀个空格,所以 min/* space */Value 会变成 min Value ,⽽不是 minValue 。
每日一更!
公众号、CSDN等博客:小菜狗编程笔记
谢谢点赞关注哈!目前在飞书持续优化更新~
日更较慢有需要完整笔记请私我,C/C++/数据结构-算法/单片机51-STM32-GD32-ESP32/嵌入式/Linux操作系统/uboot/Linux内核-驱动-应用/硬件入门-PCB-layout/Python/后期小程序和机器学习!