目录
1. 程序设计语言的基本构成元素
1.1 关键字
-
也称保留字(Reserved Word),是C语言预先定义的、具有特殊意义的单词
-
ANSI C89——32个
1.2 标识符
-
大小写字母,数字和下划线 构成的一个字符序列
-
分为系统预定义标识符、用户自定义标识符(用于标识变量名、符号常量名、数组名、函数名等)
-
命名规则
-
首字符 必须是 字母或下划线
-
见名知意,不要使用汉语拼音
-
不能与关键字及系统预定义的标识符相同
-
2. C语言程序处理的数据形式
2.1 常量
- 在程序中不能改变其值的量
- 包括
- 整型,如67(十进制),022(八进制),0x12(十六进制),123L(长整型),123u(无符号整型)。
- 默认为int类型。
- 实型,如 3.14(十进制小数),1.2e-5(指数形式),2.73F(单精度实型),2.73L(长双精度实型)。
- 默认为double类型。
- 字符型,如 'z','3'。
- 字符串,如 “UKM”,“3”。
- 枚举型。
- 整型,如67(十进制),022(八进制),0x12(十六进制),123L(长整型),123u(无符号整型)。
2.1.1 幻数
- 在程序中直接使用的常数
-
使用幻数存在什么问题
-
程序的可读性变差
-
容易发生书写错误,产生不一致性
-
当常数需要改变时,要修改所有引用它的代码,繁琐,还可能有遗漏
-
- 避免:把幻数定义为宏常量或const常量
- 减少重复书写常数的工作量
- 提高程序的可读性和可维护性
2.1.2 宏常量
- 用一个标识符号来表示的常量
-
定义: #define 标识符 字符串
-
标识符即宏名,一般全大写
-
字符串, 不区分数据类型
-
-
编译预处理命令:在源程序编译之前,先对程序中的编译预处理命令进行处理然后将处理的结果和源程序一起进行编译,以得到目标代码
tips:宏定义后不加“;”
- 存在的问题:
-
没有数据类型,编译器在宏替换时不进行类型检查
-
只进行简单的字符串替换,极易产生意想不到的错误
-
2.1.3 const常量
-
const常量与宏常量相比的优点
-
有数据类型,编译器能对其进行类型检查
-
某些集成化调试工具可以对const常量进行调试
-
可尝试将float类型改为double类型(未进行验证)。
未进行宏替换
- notice
- 可以用#undef命令终止宏定义的作用域
- 字符串" "中永远不包含宏
- 宏定义不分配内存,变量定义分配内存
2.2 变量
- 在程序执行过程中可改变其值的量
- 使用变量的基本原则
- 先定义,后使用
-
C89规定所有变量必须在第一条可执行语句前定义(C99取消了这一规定)
-
变 量定义语句
-
类型关键字 变量名
-
一条变量定义语句可定义多个同类型的变量
-
- 编译器按变量定义的类型分配相应大小的内存空间
- 内存按字节编址,用唯一的一个十六进制无符号整数来标识地址
-
变量名(Name): 标识内存中一个具体的存储单元
-
变量的4个基本属性:变量名、变量的值、变量的类型、变量的地址
3. 数据类型
3.1 概念
- 在冯·诺依曼体系结构中
- 程序代码和数据都是以二进制存储的
- 对计算机系统和硬件本身而言,数据类型的概念并不存在
- 高级语言为什么要区分数据类型?
- 更有效地组织数据,规范数据的使用
- 有助于提高程序的可读性,方便用户的使用
- 在程序设计语言中引入数据类型的好处
- 带来了程序的简明性和数据的可靠性
- 有助于提高程序执行效率、节省内存空间
3.2 C语言中的数据类型
变量的类型决定了什么:占用内存空间的大小、数据的存储形式、合法的表数范围、可参与的运算种类。
- 不同类型数据占用的内存大小不同
如何计算变量或类型占内存的大小
- 用sizeof一元运算符
-
好处
-
增加程序的可移植性
-
编译时执行的运算符,不会导致额外的运行时间开销
-
-
一般形式:
2. 不同数据类型的表数范围不同
- 有符号整数的最高位是符号位,使其数据位比无符号整数的数据位少了1位
- 有符号整数能表示的最大整数的绝对值仅为最大无符号整数的一半
3. 不同类型数据的存储形式不同
-
整数
-
小端次序
-
便于计算机从低位字节向高位字节运算
-
-
大端次序
- 与人们从左到右的书写顺序相同,便于处理字符串
-
- 实型数
- 整数、纯小数。
- 定点数,小数点位置固定。
- 指数形式(阶码和尾数)。
- 浮点数,小数点位置不固定。
- 整数、纯小数。
- 字符型数据
-
以二进制编码方式存储,一个字节保存一个字符
-
字符常数就是一个普通整数
-
取决于计算机系统所使用的字符集
-
4. 不同数据类型可参与的运算不同
- 整型:加、减、乘、除、求余
-
实型:加、减、乘、除
-
字符型:加、减(整数),对ASCII码值的运算
-
指针类型:加、减(整数)和 比较运算
4. 数据的表示与存储
- 为什么计算机用二进制而不是十进制来存储数据?
- 二进制数只有0和1两个数码,它的每一位都可以用电子元件来实现,且运算规则简单,相应的运算电路也容易实现。
- 16位无/有符号数排列
- 字与字长
- 字:在计算机中,一串数码是作为一个整体来处理或运算的,称为一个计算机字。
- 字长:计算机存储一个字所需的字节的长度。
- 小数的表示
- 定点数:小数点位置固定不变
- 定点小数(纯小数),表数范围为
- 定点整数,表数范围为
- 缺点:表达的数值范围非常有限
- 定点小数(纯小数),表数范围为
- 二进制科学计数法:
- 浮点数,小数点位置不固定
- 优点:表达更大更精确的小数
- 定点数:小数点位置固定不变
阶码决定范围,尾数决定精度。
Exp1:采用8位阶码23位规格化尾数时,尾数表数范围是多少?
规格化数:第一位为1
尾部表示的范围为,
阶码的表示范围为:
如果尾数为非规格化数,则表数范围为多少?
- 浮点数的标准格式 IEEE754
- 尾数M,纯小数表示, 小数点放在尾数域的最前面。采用原码表示, 规格化表示有隐藏位
-
阶码E,采用“移码”表示
-
其精度是有限的,仍然 是实数的 近似 表达
-
二进制小数与十进制小数之间并不是一一对应的关系
- 一个二进制小数一定对应一个十进制小数
-
一个十进制小数却不一定刚好有一个二进制小数与之对应
-
有效数字
-
对于一个近似数,从左边第一个非 0的数字起到精确到的位数为止,其间的所有数字
-