《C语言程序设计:问题与求解方法》——2.9节常量

简介:

本节书摘来自华章社区《C语言程序设计:问题与求解方法》一书中的第2章,第2.9节常量,作者:何 勤,更多章节内容可以访问云栖社区“华章社区”公众号查看

2.9 常量
C语言源程序中,可以使用的运算量有两大类:常量和变量。在程序运行过程中,其值不能被改变的量称为常量。
C语言中常量又分为数值常量和符号常量两大类。程序中应当多使用含义比较清楚的符号常量,尽量不要用意义不太明确的数值常量。

2.9.1 数值常量
在C语言源程序中,数值常量可以直接使用,数值常量的书写规则与我们在日常工作中书写常量的规则很类似但又有些区别。必须严格按照C语言的规范要求来书写,否则,编译程序将无法识别,不能将其转换成机器指令能够处理的二进制机内形式的常量。
常用的数值常量有以下几种:
1)十进制整型常量 : 567、–425 、0 等, 这是没有小数分量的整数值。可以带有正负号,但正号可以省略不写。
注意:一个整型常量的各个数字之间不能出现空格或逗号(例如,12345 既不能写成12,345也不能写成12 345)。除了整数值0以外,其他任何整数值不能以0开头(比如,0761会被编译程序当作八进制整数,参见第3章)。
整型常量的其他表示形式请参见下一章。
2)实型(或称为浮点型)常量。实型常量在源程序中的两种书写形式是:
十进制小数形式:由正负号、数字、小数点构成。0.543、.543、543.、543.21、0.0 都是十进制的小数形式。在数的左边还可以加上正负号。比如–543.0。小数点的两边至少有一边要有数字。
指数形式:绝对值太小或太大的实型常量,用小数形式表示很不方便,可以用指数形式表示。比如,数学中的7.16×1015 在C语言中要用7.16E+15 表示;数学中的–3.456×10–11在C语言中要用–3.456e–11 表示。
注意:一个数值的指数表示形式并不是唯一的。比如,54.3e–2和5.43e–1都等于0.543,也就是说表示同一个实数时,该数的小数点是可以“浮动”的。这是浮点数名称的由来。
小数点前面只保留一位非零数字的指数形式,称为规范化的指数形式。
提示:指数形式浮点数的书写规则
字母e(或者E)之前和之后都必须有数字,这些数字之前都可以带有正负号。
e(或者E)之后的指数必须是一个整数值。
在字母e(或者E)的前后以及数字之间不得插入空格。
注意,在C语言源程序中不能使用二进制常量。
3)字符常量:用一对单引号括起来的英文常用字符集(英文常用字符集对于绝大多数当代计算机来说,就是ASCII字符集)中的单个字符,称为字符常量,例如'a'、'*'、'8'、' '(这是一个空格字符)等。
在程序的正文部分书写字符常量时,都必须用单引号括住,以便与单个字符的标识符或运算符区别开来。比如在源程序正文部分,a 是标识符,+ 是加法运算符,然而,用单引号括住的'a' 和'+'都是字符常量。但是在输入或输出字符常量时,都不用单引号括住。
在C语言中,可以使用转义字符'n'表示“回车换行”字符,本章后面将对转义字符进一步说明。
字符常量是用计算机进行文字处理的基础。
4)字符串常量:由用双引号括起来的连续多个字符组成,如“567”、“hello”等。
我们在程序中看到的字符串常量,其实在内存中,通常只不过是在多个连续的字节中存放的一串二进制的ASCII码而已。
注意:“h”是字符串常量而不是字符常量。
2.9.2 符号常量
前面所讲的都是数值常量(C语言中字符常量也是数值常量中的一种)。而符号常量是用符号在源程序中表示一个数值常量。符号常量一般由大写英文字符组成的标识符构成,用编译预处理命令#define将符号常量与某个数值常量关联起来。 比如:

#define  PI  3.14

这样一来,在进行编译之前,源程序中所有出现的符号常量PI都会被编译预处理程序用 3.14 替换掉。
使用符号常量会使得修改常量的值变得非常方便。对于上例,只要将 #define PI 3.14 修改为#define PI 3.1416 ,则源程序中多处出现的PI便都会被编译预处理程序替换成 3.1416,程序的可读性也更好。
对于字符常量和整型常量,也都可以用符号常量来表示,比如:

#define  ADD    '+'
#define  days   31

2.9.3 数据的机内形式和机外形式
源程序中(或输入输出时),常量(或变量)值的形式(比如十进制形式)称为数据的机外形式;而计算机内部存储(和传输)的二进制数据形式称为数据的机内形式。一个机内形式的数据常常可以表示为多种等值的机外形式的数据。
我们在编写C语言源程序和运行程序输入数据时,只能使用数据的机外形式,不能使用二进制数据。将机外形式数据转换成机内形式数据是由系统(编译程序、输入输出库函数等)自动进行的。但是在遇到了一些疑难编程问题(溢出、类型转换或进行嵌入式编程和系统编程)时,往往需要了解和掌握数据的机内形式,才能找到较好的解决方案。
延伸与拓展:数据的机内存储形式
整型量在计算机内部的存储方式
整型量在计算机内部的存储方式有两类:无符号整型和有符号整型。无符号整型就是用一定长度的二进制位串直接表示的非负整数。有符号整型就是用一定长度的二进制位串作为编码,来间接表示一个有符号整数。通常用最高位表示数的符号,最高位为0表示正数,最高位为1表示负数。在绝大多数计算机中,使用补码来表示有符号整数。
实型量在计算机内部的存储方式
在计算机内部,实型量的存储方式与整型量的存储方式全然不同。它们通常是以规范化的指数形式来存储的(即小数点前面只有一位非负整数的指数形式,在二进制中,这个非负整数必定是1)。一般是用内存中地址连续的几个字节(比如4个字节一共32位)中的最高位表示数的正负号、若干位表示数的指数部分、若干位表示数的小数部分(即除去一位非零整数部分后的小数部分),见下表。
符号位(占1位) 指数部分(若干位) 小数部分(若干位)

指数部分的符号通常隐含在指数部分的数据位串中,这是由于指数部分通常采用余码表示法,进一步的讨论请参见第3章。
【过关测试】指出例题2.2中,哪些是程序的正文部分?哪些是关键字?哪些是标识符?哪些是数值常量?哪些是符号常量?

相关文章
|
23天前
|
存储 算法 C语言
【C语言】字符常量详解
字符常量是C语言中处理字符数据的重要工具。通过单引号括起一个字符,我们可以方便地使用字符常量进行字符判断、字符运算和字符串处理等操作。理解字符常量的表示方法、使用场景和ASCII码对应关系,对于编写高效的C语言程序至关重要。
96 11
|
23天前
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
42 7
|
23天前
|
C语言
【C语言】<常量> 之群英荟萃
在C语言中,常量(Constants)是指在程序运行过程中其值不能被修改的固定值。常量包括数值常量(整型和浮点型)、字符常量、字符串常量、使用const关键字定义的常量变量以及枚举常量。
26 4
|
27天前
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
44 6
|
23天前
|
编译器 C语言
【C语言】常量的 “前缀和后缀” 大通关!
在C语言中,常量的前缀和后缀用于明确指定常量的类型和进制系统。前缀主要用于区分不同进制的数字常量,而后缀则用于区分不同类型的整数和浮点数。正确使用前缀和后缀,可以提高代码的可读性和可维护性,确保编译器正确地理解和处理常量。
33 1
|
2月前
|
Java 编译器 C语言
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
31 3
|
2月前
|
存储 C语言
初识C语言:常量与变量中寻找数据类型
初识C语言:常量与变量中寻找数据类型
|
3月前
|
存储 C语言
【C语言基础考研向】02 数据类型-常量-变量
本文介绍了编程中的基本概念,包括数据类型分类、常量与变量的定义及使用。首先概述了四大类数据类型:基本类型(整型、浮点、字符型)、构造类型(数组、结构体)、指针类型和空类型。接着阐述了常量与变量的区别及命名规则,并详细说明了整型、浮点型和字符型数据的特点与应用。最后总结了常见的易错点,如字符串与字符常量的区别及浮点数的默认输出格式。
|
3月前
|
安全 编译器 C语言
C语言常量的定义与使用的注意点
在 C 语言中,常量是在程序运行期间值不变的量,通过字面值、`#define` 或 `const` 关键字定义。字面常量直接在代码中表示固定值,如整数 `100`、浮点数 `3.14`、字符 `'A'` 和字符串 `"Hello, World!"`;`#define` 用于定义宏,如 `#define PI 3.14159`;`const` 则定义不可变变量,如 `const int daysInWeek = 7`。常量可用于数组大小、循环边界等场景,并能提升代码的可读性和可维护性。使用时需注意作用域、类型安全和命名,避免直接使用数字(魔法数字)。
|
3月前
|
C语言
C语言程序设计核心详解 第四章&&第五章 选择结构程序设计&&循环结构程序设计
本章节介绍了C语言中的选择结构,包括关系表达式、逻辑表达式及其运算符的优先级,并通过示例详细解释了 `if` 语句的不同形式和 `switch` 语句的使用方法。此外,还概述了循环结构,包括 `while`、`do-while` 和 `for` 循环,并解释了 `break` 和 `continue` 控制语句的功能。最后,提供了两道例题以加深理解。
106 7