【C语言】基本语法结构(上篇)

本篇目录

  • [1. 变量声明](#1. 变量声明)
    • [1.1 变量的定义与命名规则](#1.1 变量的定义与命名规则)
    • [1.2 变量的初始化](#1.2 变量的初始化)
    • [1.3 变量作用域的基本概念](#1.3 变量作用域的基本概念)
      • [1.3.1 局部变量](#1.3.1 局部变量)
      • [1.3.2 全局变量](#1.3.2 全局变量)
  • [2. 数据类型](#2. 数据类型)
    • [2.1 整型](#2.1 整型)
    • [2.2 浮点型](#2.2 浮点型)
    • [2.3 字符型](#2.3 字符型)
      • [2.3.1 ASCII码](#2.3.1 ASCII码)
  • [3. 其他](#3. 其他)
    • [3.1 计算机的存储单位](#3.1 计算机的存储单位)
      • [3.1.1 最小单位:位(Bit)](#3.1.1 最小单位:位(Bit))
      • [3.1.2 基础单位:字节(Byte)](#3.1.2 基础单位:字节(Byte))
      • [3.1.3 运算单位:字(Word)](#3.1.3 运算单位:字(Word))
    • [3.2 本篇参考/来源](#3.2 本篇参考/来源)

1. 变量声明

变量是C语言中存储数据的基本单元。

变量就像是你家收拾的物品的抽屉,每个抽屉(变量)都有名字和类型,用来存不同的东西(数据)📄。

1.1 变量的定义与命名规则

变量的定义需要明确指定其类型和名称。

类型\] \[变量名

类型就是你存储数据📊的属性。

所有变量都必须先声明后使用。

请注意,在编写C语言一个完整的语句的时候,不要忘记在末尾添加分号(英文输入法中)。

就像是你在人群中找人,你要先知道一个人的名字,才能找到那个人🗣️

C语言的变量命名需遵循以下规则:

  • 由字母、数字和下划线组成,且必须以字母或下划线开头;
  • 要区分大小写,如Alice和alice是两个不同的变量;
  • 不能使用C语言的"关键字"作为变量名。
关键字类型 一共32个关键字(目前为止)
数据类型关键字 char、short、int、long、float、double、unsigned、signed、void、struct、union、enum
控制语句关键字 if、else、for、while、do、switch、case、default、break、continue、goto、return
存储类型关键字 auto、register、static、extern、const
其他关键字 sizeof、typedef、volatile

例如,定义一个存储年龄的整型变量:

c 复制代码
int age;

上面这行定义了一个名叫age的变量,也就是我们现在有了一个叫age的空抽屉🗃️

1.2 变量的初始化

初始化变量就是为变量赋一个初始值。

初始化变量可以直接在声明中完成,只需在变量名后面加上* 赋值运算符(=)*和待赋给变量的值即可。

  • 基础赋值运算符=:将右侧表达式的结果存储到左侧变量中,也就是将左边的数值给右侧的变量。

变量初始化的常用方法如下⬇️

c 复制代码
int age = 18;

也就是在名为age的抽屉中,放了一张写着"18"的字条,既然它是个抽屉了,自然我们这里的数据可以不止是18,还可以是19、20。

但我们放的第一个纸条是数字18,所以变量初始化就是给"抽屉塞的第一个东西"。

上述是简单的单个变量初始化,既然有一个存储物品的空间🏠,那我们可以有很多的空间去存储不同的东西⬇️

c 复制代码
int money = 100,save = 200;

1.3 变量作用域的基本概念

变量的作用域,听上去是个很抽象的概念,实际上变量的作用域可以理解为可见范围👀

就是意味着你能够在哪看到你的"盒子"🗃️

1.3.1 局部变量

上述我们在名为age的抽屉里放了"18"字条,抽屉的位置是在卧室。那么我们的作用域就是在卧室🛏️。

这种就称为局部变量,只有在特定区域可以使用的变量。

局部变量是在程序某个范围内可以使用,但超过这个范围便不可以使用,因为整个变量只作用在该范围内。

这是Alice的储物箱,Anna不能使用

在班级中,每个人都有自己的储物箱,那这个储物箱(变量)的所属权(作用域)是该学生而不是其他同学。

1.3.2 全局变量

与局部变量相对的就是全局变量。

这是班级公共的书架,所以Amy和Anna可以借阅

还是在班级中,班级的公共图书架📖是班级内所有都可以拿来借阅的,也就是在整个班级(程序)当中,任何人都可以对公共图书(全局变量)进行访问。

全局变量就是整个程序范围内都可以访问的变量。

在以后的程序练习中,我们会详细的介绍这两者的区别和使用,这里作为基础概念进行讲解。

2. 数据类型

C语言会把数据分成不同的"类型",就像喜欢收纳物品的人喜欢将物品进行分类放到不同的地方。

数据类型用于存储不同类型的数据,下面是三种基本的数据类型。

2.1 整型

整型用于存储整数。

整型 介绍
int 基本整型,通常占4个字节
short(或short int) 短整型,占2个字节
long(或long int) 长整型,占4个或8个字节
long long(或long long int) 长长整型,占用8个字节

字节是计算机存储和处理数据的基础单位,在本篇3.1中我会进行这方面的介绍。

c 复制代码
int a = 10;

定义了一个名叫a的基本整型变量,a的值为10。

2.2 浮点型

浮点型又称实型,用于存储带小数的数值。

浮点型(实型) 介绍
float 单精度浮点型,占用4个字节,精度约6-7位有效数字
double 双精度浮点型,占用8个字节,精度约15-17位有效数字

在大多数情况下,使用double可以获得更高的精度,能够让我们所计算的数据更加准确。

c 复制代码
double pi = 3.1415926;

定义了一个名叫pi的双精度浮点型变量,pi的值为3.1415926。

2.3 字符型

字符型char用于存储单个字符,占用1个字节。

它既可以存储单个字符,也可以存储小整数。

c 复制代码
char ch = 'A';
char num = 65;	//就是num = 'A';

注意,如果要将A赋值给ch,那么需要加上单引号(英文状态下)。

这里的小整数并非是真正的整数,而是ASCII码值,所以这里的65和'A'代表的含义是一样的,都表示大写字母A。

2.3.1 ASCII码

我们来简单的理解一下计算机⬇️

一个灯的状态有两种,开和关。

所以电子元件的状态有两种,开和关,用数字来表示就是0和1,计算机是由许许多多个电子元件组成的。

所以计算机能够直接计算有关0和1 相关的计算,也就是机器能够直接执行。

但是在现在的社会,我们生活中不止有数字,还有字符,还有其他数据,因此美国的标准化组织就出台了ASCII编码,规定了常用符号用哪些二进制数来表示。

由于数制之间是可以互相转换的,二进制可以转换成十进制(我们数学计算中,用的就是十进制),十进制可以同样转换为二进制。

十进制 二进制 ASCII 码(字符 / 含义) 分类说明
0 00000000 NUL(空字符) 控制字符,用于标识空白
8 00001000 BS(退格键) 控制字符,光标左移 1 位
9 00001001 TAB(制表符) 控制字符,光标跳格
10 00001010 LF(换行键) 控制字符,光标换行
13 00001101 CR(回车键) 控制字符,光标回车
32 00100000 (空格字符) 可显示字符,空白间隔
48 00110000 0(数字 0) 可显示字符,数字 0-9 起始
49 00110001 1(数字 1) 可显示字符,数字系列
... ... ... (数字 2-9) 十进制 48-57 对应数字 0-9
65 01000001 A(大写字母 A) 可显示字符,大写字母起始
66 01000010 B(大写字母 B) 可显示字符,大写字母系列
... ... ... (大写字母 C-Z) 十进制 65-90 对应大写 A-Z
97 01100001 a(小写字母 a) 可显示字符,小写字母起始
98 01100010 b(小写字母 b) 可显示字符,小写字母系列
... ... ... (小写字母 c-z) 十进制 97-122 对应小写 a-z
33 00100001 !(感叹号) 可显示字符,标点符号
64 01000000 @(@符号) 可显示字符,特殊符号
127 01111111 DEL(删除字符) 控制字符,用于删除操作

⬆️这就是常见的ASCII码值,下篇我会讲到有关二进制十进制的互相转换和计算,这里作为学习的参考。

3. 其他

这里我们只作传统计算机和大众计算机进行说明,不探讨其他。

3.1 计算机的存储单位

在上述有关ASCII码的学习当中,我们了解到计算机能够直接理解的就是二进制,也就是电子元件的通路/断路两种状态。

3.1.1 最小单位:位(Bit)

计算机中最小的数据单位是"位",只能表示两种状态:0或1。

在计算过程中,位通常用bit来表示。

在计算机中的所有的数据最终都会被拆解成"0"和"1"的位组合。

3.1.2 基础单位:字节(Byte)

字节是计算机中最常用的基础存储单位,1字节一般简写为1B。

字节与位的换算关系是这样的⬇️

1字节=8位。

由于字节本身也较小,实际使用中会使用更大的单位,他们的换算关系是1024,也就是210

  • 1KB(千字节) = 1024B
  • 1MB(兆字节)= 1024KB
  • 1GB(吉字节) = 1024MB
  • 1TB(太字节)= 1024GB

3.1.3 运算单位:字(Word)

字是计算机一次能处理的数据长度,大小并不固定,取决于计算机的"字长"(如32位机、64位机),1字=字节对应的字节数。

字体现计算机的运算能力,字长越长,计算机一次能处理的数据越多,运算速度通常越快。

举例🌰

  • 32位计算机:字长=32位,1字=4字节(32➗8=4),一次能处理4字节的数据📊
  • 64位计算机:字长=64位,1字=8字节(64➗8=8),一次能处理8字节的数据📊

3.2 本篇参考/来源

  • Kernighan, B., & Ritchie, D. The C Programming Language (第2版)[M].
  • Stephen Prata. C Primer Plus(第 6 版)中文版 [M]. 姜佑 译. 北京:人民邮电出版社,2019.
  • 图片由本人手绘制作✍️
相关推荐
草莓熊Lotso6 小时前
《C++ Stack 与 Queue 完全使用指南:基础操作 + 经典场景 + 实战习题》
开发语言·c++·算法
孤客网络科技工作室6 小时前
Python - 100天从新手到大师:第五十七天获取网络资源及解析HTML页面
开发语言·python·html
武文斌776 小时前
复习总结最终版:计算机网络
linux·开发语言·学习·计算机网络
朝九晚五ฺ7 小时前
【Redis学习】持久化机制(RDB/AOF)
数据库·redis·学习
帅大大的架构之路7 小时前
高级篇:Python脚本(101-150)
开发语言·python
你真的可爱呀8 小时前
uniapp学习【路由跳转 +数据请求+本地存储+常用组件】
前端·学习·uni-app
reasonsummer8 小时前
【办公类-115-06】20250920职称资料上传04——docx复制、docx转PDF(课程表11个)
开发语言·windows·python·c#
学好statistics和DS9 小时前
【CV】神经网络中哪些参数需要被学习?
人工智能·神经网络·学习
栀寒老醑9 小时前
Python实现的服务器日志监控脚本
开发语言·python