C++常量
前言
这一节我们将学习数据类型的相关知识,可能会涉及到一些C++的基本语法,如果你还有不明白的,请到C++基本语法这里温故一下
C++常量
在C++编程语言中,常量指的是那些一旦被设定就不能再改变的值,它们就像是被冻结的数据,始终保持不变。这些值就像是直接写在代码里的字面量,比如数字、字母或者特定的文本。
常量可以是各种基本数据类型,包括:
- 整型数字:比如整数123。
- 浮点数字:比如带有小数点的数字3.14。
- 字符:单个字母或符号,比如’A’或’#’。
- 字符串:一系列字符组成的文本,比如”Hello, World!”。
- 布尔值:只有两个可能的值,true(真)或false(假)。
注意:常量和变量类似,但关键的区别在于常量一旦被赋予一个值,这个值就不能被改变。这意味着,如果你在程序中声明了一个常量,你就必须在声明时给它一个值,并且在程序的其余部分,这个值是不可更改的。这样的设计可以帮助避免在程序运行过程中意外改变重要的数据,确保程序的稳定性和可靠性。
整数常量
定义:整数常量是没有小数部分的数字,可以是十进制、八进制或十六进制。
进制表示:
- 十进制:直接写数字,比如
85。 - 八进制:以
0开头,比如0213。 - 十六进制:以
0x或0X开头,比如0x4B。
- 十进制:直接写数字,比如
后缀:整数常量可以带后缀,表示类型:
U:无符号整数(Unsigned)。L:长整数(Long)。- 顺序不重要,比如
30U和30u都可以。
示例:
1 | 212 // 合法的十进制整数 |
浮点常量
- 定义:浮点常量是带小数点的数,或者用科学计数法表示的数。
- 表示方式:
- 小数形式:同时包含整数部分和小数部分,比如
3.14。 - 指数形式:用
e或E表示,比如314E-2(等于 3.14)。
- 小数形式:同时包含整数部分和小数部分,比如
注意事项:
- 小数形式必须包含整数或小数部分,比如
3.或.141。 - 指数形式必须包含
e或E,后面跟一个指数值。
示例:
1 | 3.14159 // 合法的小数形式 |
布尔常量
- 定义:布尔常量只有两个值,用于表示“真”和“假”:
true:表示“真”。false:表示“假”。
- 注意:虽然
true和false在底层分别表示1和0,但我们不应该直接把它们当成数字使用。
示例:
1 | bool isActive = true; |
字符常量
- 定义:字符常量是用单引号包裹的单个字符,比如
'a'。 - 宽字符:
- 如果以
L开头(如L'x'),则表示宽字符,存储在wchar_t类型变量中。
- 如果以
- 窄字符:
- 普通字符(如
'x')存储在char类型变量中。
- 普通字符(如
特殊字符(转义序列):
- 转义字符:用反斜杠
\开头,表示特殊含义的字符。 - 常见转义字符:
转义序列 含义 \\反斜杠 \\'单引号 '\"双引号 "\n换行符 \t制表符 \r回车符
示例:
1 |
|
输出:
1 | Hello World |
字符串常量
- 定义:字符串常量是用双引号
""包裹的一段文本内容。 - 组成:它可以包含普通字符、特殊字符(通过转义序列如
\n表示换行)以及通用字符(如Unicode字符)。
特点
如何表示字符串:
- 只需要用双引号包裹内容,例如:
"Hello, World!"。 - 字符串中可以包含字母、数字、符号,以及通过转义序列表示的特殊字符。
- 只需要用双引号包裹内容,例如:
分行显示字符串:
- 如果字符串太长,可以使用反斜杠
\将其分成多行书写,但显示时仍会显示为一行。
- 如果字符串太长,可以使用反斜杠
示例代码
以下代码展示了如何使用字符串常量:
1 |
|
输出结果
1 | hello, runoob |
解释
greeting是一个普通的字符串,直接赋值并输出。greeting2使用了反斜杠\来分行写字符串,但显示时仍为一行,因为\只是告诉编译器“这是一行字符串,书写上分为了多行”。
小总结
- 整数常量:表示整数,可以加后缀指定类型,支持十进制、八进制和十六进制。
- 浮点常量:表示带小数的数,支持小数形式和指数形式。
- 布尔常量:表示逻辑上的真或假,分别为
true和false。 - 字符常量:用单引号表示单个字符,支持转义字符表示特殊符号。
- 字符串常量是用双引号括起来的文本。
- 如果字符串太长,可以用反斜杠
\进行分行,输出时仍显示为一行。 - 字符串可以包含特殊字符,比如
\n表示换行符,\t表示制表符。
以下是对“定义常量”更通俗易懂的解释:
定义常量
- 如前面所说,常量是值在程序运行过程中不会改变的变量。
- 在C++中,我们可以通过两种简单的方法定义常量:
- 使用
#define预处理器。 - 使用
const关键字。
- 使用
方法一:使用#define预处理器
#define是一种直接替换文本的工具,在编译前会将程序中所有出现的标识符替换为指定的值。- 格式:
1
示例代码:
1 |
|
输出:
1 | 50 |
说明:
- 程序运行前,所有的
LENGTH都会被替换为10,WIDTH会被替换为5,NEWLINE会被替换为换行符。 #define没有类型约束,是一种简单直接的方法。
方法二:使用const关键字
const是一种更严格的方式,用于定义带类型的常量。- 格式:
1
const 数据类型 变量名 = 值;
示例代码:
1 |
|
输出:
1 | 50 |
说明:
- 使用
const定义的常量有类型约束,更加安全。 const可以直接参与类型检查,这对大型程序更有帮助。
哪种方式更好?
**
#define**:- 优点:简单直接,没有类型约束。
- 缺点:在大型项目中,缺乏类型检查,可能会引发难以追踪的错误。
**
const**:- 优点:具有类型约束,更加安全;现代C++中更推荐使用。
- 缺点:相较于
#define,书写稍显繁琐。
编程实践
- 通常,我们会将常量的名字用大写字母表示,这样可以让代码更容易阅读和维护。
- 示例:通过以上两种方式,你可以选择适合自己需求的方式来定义常量。对于现代C++程序,推荐优先使用
1
const int MAX_SPEED = 120; // 推荐的命名方式
const关键字。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Matou🚢!
评论








