C_03_常量

1. 整数常量

  • 整数常量可以是十进制、八进制或十六进制的常量
  • 前缀指定基数
    • 0x0X - 表示十六进制
    • 0 - 表示八进制
    • 不带前缀则默认表示十进制
  • 整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意
212         /* 合法的 */
215u        /* 合法的 */
0xFeeL      /* 合法的 */
078         /* 非法的:8 不是八进制的数字 */
032UU       /* 非法的:不能重复后缀 */
---
int myInt = 10;
long myLong = 100000L;
unsigned int myUnsignedInt = 10U;
  • 以下是各种类型的整数常量的实例
85         /* 十进制 */
0213       /* 八进制 */
0x4b       /* 十六进制 */
30         /* 整数 */
30u        /* 无符号整数 */
30l        /* 长整数 */
30ul       /* 无符号长整数 */

2. 浮点常量

  • 带符号的指数是用 eE 引入的
3.14159       /* 合法的 */
314159E-5L    /* 合法的 */
510E          /* 非法的:不完整的指数 */
210f          /* 非法的:没有小数或指数 */
.e55          /* 非法的:缺少整数或分数 */

3. 字符常量

  • 字符常量是括在单引号中,例如,x 可以存储在 char 类型的简单变量中。
  • 在 C 中,有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义,称为转义字符:
转义序列含义
\\\字符
\''字符
\""字符
\??字符
\a警报铃声
\b退格键
\f换页符
\n换行符
\r回车
\t水平制表符
\v垂直制表符
\ooo一到三位的八进制数
\xhh . . .一个或多个数字的十六进制数

4. 定义常量

  • 变量名应为全大写
  • 如果你试图对常量做修改,就会被编译器发现,指出为一个错误。

4.1. #define 预处理器

  • #define 常量名 常量值
    • #define PI 3.14159

4.2. const 关键字

  • const 数据类型 常量名 = 常量值;
    • const int MAX_VALUE = 100;

4.3. #defineconst 区别

  • 通常情况下,建议使用 const 关键字来定义常量,因为它具有类型检查和作用域的优势,而 #define 仅进行简单的文本替换,可能会导致一些意外的问题。
  • #define 预处理指令和 const 关键字在定义常量时有一些区别:
    • 替换机制:#define 是进行简单的文本替换,而 const 是声明一个具有类型的常量。#define 定义的常量在编译时会被直接替换为其对应的值,而 const 定义的常量在程序运行时会分配内存,并且具有类型信息。
    • 类型检查:#define 不进行类型检查,因为它只是进行简单的文本替换。而 const 定义的常量具有类型信息,编译器可以对其进行类型检查。这可以帮助捕获一些潜在的类型错误。
    • 作用域:#define 定义的常量没有作用域限制,它在定义之后的整个代码中都有效。而 const 定义的常量具有块级作用域,只在其定义所在的作用域内有效。
    • 调试和符号表:使用 #define 定义的常量在符号表中不会有相应的条目,因为它只是进行文本替换。而使用 const 定义的常量会在符号表中有相应的条目,有助于调试和可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值