当前课程知识点:C语言程序设计 > 第3章 基本数据类型、运算符与表达式 > 3.2 常量 > 常量
同学们大家好
上节课我们介绍了C语言的数据类型
以及C程序中的标识符的命名原则
这节课我们来学习常量
常量顾名思义在程序运行过程中
类型和值都不发生改变的量-也就是我们常说的常数
在常量中又可分为值常量和符号常量
其中值常量按类型划分有整型常量
实型常量
字符常量
字符串常量
枚举常量
除了枚举常量外
编译系统从它们的数据表示形式上
就能区分它们的类型
在计算机中的数据都是以二进制形式存储
在C程序中为了方便使用整型常量
可以用十进制
八进制
十六进制等形式来表示
编译系统会自动将它们转换成二进制形式进行存储
下面是整型常量的表现形式:
十进制由0~9数字序列和正负号构成
比如10
-30
八进制由数字0开头
后跟0~7的数字序列
如 022
017
十六进制由小写0x或大写0X开头
紧接着后跟数字0~9
小写a~f或大写A~F
如 0x12 0Xff
除此之外还有
长整型常量如123L
-128l
无符号整型常量如20u
对于无符号数据不能表示成小于0的数如-20U
在计算机中实型数以浮点形式表示
可以简单的理解成小数点是浮动的
因此实型常量既可以称为是实型
也可以称为浮点数
在C语言中实数采用十进制小数形式
和十进制指数形式两种形式来表示
十进制小数形式就是我们平时使用的带小数点的数字
如0.34
-56.79
均为合法的实数
这里要说明的是小数点不能少
在实际的应用中我们会遇到
绝对值较大或较小的数据
这时我们将采用指数形式来描述
如0.000000123
就可以写成1.23×10-7
因为在C程序中不能有上下角标的形式
所以以e来代替以10为底的指数
因此数据又可以写成
1.23e-7的形式
我们将指数形式表示成
aE±n的形式
其中a为有效数值部分
规范化的形式是
小数点左边有且只有一位非零数字
n为指数部分只能为整数
下面我们列举了合法和非法的实型常量
合法的表示形式有 2.1E5
3.7E-2
非法的实数表示
如
345(无小数点)
E7(阶码标志E的左侧无有效数值)
50.-E3(符号位的位置不对)
在C语言中实型常量的类型默认按双精度浮点型处理
如果需要单精度浮点型则在常量数值后
加小写或大写f来表示
在计算机中除了处理数值数据
还要具备对文本信息处理的功能
那么文本信息在计算机中
又是如何存储的呢
我们使用字符型数据来表示字母
符号
汉字等数据
字符常量是由单引号括起来的单个普通字符
或转义字符
每个字符具有一个0~255之间的数值
可从ASCII表查出
如字符大写’A’对应的ASCII值为65
小写’a’对应的ASCII值为97
数字字符’1’对应的ASCII值为49
字符1和数字1的区别如图所示
对于某些无法直接输入的
或某些特殊字符需要用转义字符来描述
转义字符的表现形式是
反斜线后面跟一个字符或一个代码值
如大写字母’A’
可以用三位八进制转义字符’\101’表示
也用2位十六进制转义字符’\x41’表示
对应的十进制的ASC值为65
我们给出转义字符对照表
第一列是转义字符在程序中呈现的形式
第二列是转义字符所对应的含义
第三列是该转义字符所对应的ASCII码值
下面我们通过一个示例来描述各转义字符的用法
结果中第1行对应程序第3行语句
\101 \对应大写字母A
\x42对应大写字母B
字符C原样照应
代表换行
结果中第2行对应程序第4行
用反斜杠双引号输出一个双引号字符
结果中第3行对应程序第5行
用两个连续反斜杠输出一个斜杠字符
结果中第4行对应程序第6行
用反斜杠单引号输出一个单引号字符
上面我们描述的都是单个字符
对两个及两个以上字符序列
我们用字符串常量来表示的
字符串常量是用双引号括起来的字符序列
如下面所示
sum
A
123
C语言规定在每个字符串尾自动加一个’\0’作为字符串结束标志
\0是一个ASC码为0的字符
即表示空操作字符
它不引起任何控制动作
也不是一个可显示的字符
不要将字符常量与字符串常量混淆
二者是不同的
比如单撇号’1’表示一个字符
在内存中占一字节
而双引号"1"
实际上包含2个字符
即字符1和\0
除了值常量外还有一种常量的表现形式-符号常量
符号常量是用标识符来代表常量
其定义格式为
#define
后跟标识符和常量
它们之间以空格进行分隔
定义一个符号常量实际上就是给一个值常量起一个名字
来看实例
定义符号常量PRICE 值为30
NUM的值为10
编程实现两个符号常量的乘积
程序如图所示
在编译时将符号常量进行置换
置换后的程序如下
在赋值语句中
PRICE 被数值30替换
NUM被数值10替换
使用符号常量注意事项如下
①行尾不能有分号
②define前面一定要有#
③符号常量名最好使用大写
④符号常量名最好有意义
使用符号常量的优越性在于一改全改
如果符号常量发生变化
只需要修订符号常量一处即可
同学们 这节课就讲到这里
我们下节课见
-计算思维与计算机
--计算思维与计算机
--计算思维与计算机
--计算思维和计算机
-2.1 程序设计语言的发展及其特点和应用
--程序设计语言的特点及发展
- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤
--C语言程序的结构和编制步骤
-3.1 C语言的数据类型
--C语言的数据类型
--C语言的数据类型
-3.2 常量
--常量
--常量
-3.3 什么是变量
--什么是变量
--什么是变量
-3.4 如何进行算术运算
--如何进行算术运算
--如何进行算术运算
-3.5 赋值运算符和逗号运算符
--赋值运算符和逗号运算符
-3.6 数据类型转换
--数据类型转换
--数据类型转换
-4.1 格式化输出printf
--格式化输出
-4.2 格式化输入scanf及字符数据的非格式化输入输出
--格式化输入
-5.1 关系运算符和关系表达式
--关系运算符和关系表达式
-5.2 逻辑运算符和逻辑表达式
--逻辑运算符和逻辑表达式
-5.3 条件运算符和条件表达式
--条件运算符和条件表达式
-5.4 if语句
--if语句
--if语句
-5.5 switch语句
--switch语句
--switch语句
-6.1 while语句
--while语句
--while语句
--do-while语句
-6.2 for语句
--for语句
--for语句
-6.3 循环的嵌套
--循环的嵌套
--循环的嵌套
-6.4 break语句和continue语句
--break和continue语句
-7.1 一维数组的定义和引用
--一维数组的定义和引用
-7.2 一维数组的赋值
--一维数组的赋值
--一维数组的赋值
-7.3 二维数组的定义和引用
--二维数组的定义和引用
-7.4 二维数组的赋值
--二维数组的赋值
--二维数组的赋值
-7.5 字符串的本质
--字符串的本质
--字符串的本质
-7.6 字符串操作的常用函数
--字符串常用函数
-7.7 字符串数组
--字符串数组
--字符串数组
-8.1 函数概述
--函数概述
--函数概述
-8.2 有参函数
--有参函数
--有参函数
-8.3 函数参数的传递方式
--函数参数的传递方式
-8.4 变量的作用域和生存期
--变量的作用域和生存期
-8.5 变量的存储类型
--变量的存储类型
--变量的存储类型
-8.6 函数的嵌套和递归调用
--函数的嵌套和递归调用
-8.7 函数的作用域与封装
--函数的作用域与封装
-9.1 指针变量的概念(上)
--指针变量的概念(上)
-9.2 指针变量的概念(下)
--指针变量的概念(下)
-9.3 指向一维数组的指针变量
--指向一维数组的指针变量
-9.4 指向二维数组的指针变量(上)
--指向二维数组的指针变量(上)
-9.5 指向二维数组的指针变量(下)
--指向二维数组的指针变量(下)
-9.6 动态内存分配
--动态内存分配
--动态内存分配
-10.1 编译预处理
--编译预处理
-11.1 用户自己建立数据类型
--用户自己建立数据类型
-11.2 定义结构体类型变量
--定义结构体类型变量
-11.3 结构体变量的引用与初始化
-11.4 结构体数组
--结构体数组
--结构体数组
-11.5 指向结构体类型数据的指针
--指向结构体类型数据的指针
-12.1 文件的基本概念和文件指针
--文件的基本概念和文件指针
-12,2 文件的打开和关闭
--文件的打开和关闭
--文件的打开和关闭
-12.3 文本文件读写
--文本文件读写
--文本文件读写
-12.4 二进制文件读写
--二进制文件读写
--二进制文件读写