什么是c语言合法的常量

来源:AI编程作者:落伍者头衔:草根站长
导读:本期聚焦于小伙伴创作的《什么是c语言合法的常量》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《什么是c语言合法的常量》有用,将其分享出去将是对创作者最好的鼓励。

在C语言程序开发中,常量是指在程序运行期间其值不能被修改的量,明确合法的常量范围是编写正确代码的基础,不同类型的常量有不同的语法要求。

什么是c语言合法的常量

C语言合法常量的分类及定义规则

1. 整型常量

整型常量即整数类型常量,包含十进制、八进制、十六进制三种形式,每种形式都有对应的书写规则:

  • 十进制整型常量:由0-9数字组成,不能以0开头,可带正负号,例如123-456+789都是合法形式。
  • 八进制整型常量:以0开头,后续由0-7数字组成,例如01230765是合法形式,089属于非法形式,因为包含8这个超出八进制范围的字符。
  • 十六进制整型常量:以0x或0X开头,后续由0-9、a-f、A-F组成,例如0x1a0XFF是合法形式,0xg8属于非法形式,因为g不在十六进制字符范围内。
  • 整型常量还可以添加后缀表示类型,uU表示无符号整型,lL表示长整型,例如123u456L789UL都是合法写法。

2. 实型常量

实型常量即浮点数类型常量,有两种书写形式:

  • 十进制小数形式:由数字和小数点组成,必须有小数点,例如3.14-0.5.895.都是合法形式,不能写成123这种没有小数点的形式作为实型常量。
  • 指数形式:由十进制数、阶码标志e或E、阶码组成,e或E后面必须是整数,且不能省略,例如1.23e4-5.6E-2是合法形式,e32.5e1.2e1.5都属于非法形式。

3. 字符常量

字符常量是用单引号括起来的单个字符,分为普通字符常量和转义字符常量:

  • 普通字符常量:单引号内只能有一个普通字符,例如'a''1''#'是合法形式,'ab'属于非法形式,因为单引号内包含多个字符。
  • 转义字符常量:以反斜杠开头的特殊字符,用于表示无法直接输入或有特殊含义的字符,例如'n'(换行符)、't'(制表符)、'\'(反斜杠本身)、'''(单引号)、'x41'(十六进制表示的字符A)、'101'(八进制表示的字符A)都是合法形式。

4. 字符串常量

字符串常量是用双引号括起来的零个或多个字符序列,例如"hello""123"""(空字符串)都是合法形式。字符串常量在存储时会自动在末尾添加''作为结束标志,这和字符常量有本质区别,例如"a"是字符串常量,存储为两个字符'a'和'',而'a'是字符常量,仅存储一个字符'a'。

5. 符号常量

符号常量是用#define宏定义的常量,格式为#define 标识符 常量值,标识符的命名规则和变量一致,只能由字母、数字、下划线组成,且不能以数字开头,例如:

#include <stdio.h>
// 定义符号常量PI,值为3.14159
#define PI 3.14159
int main() {
    printf("圆周率的值为:%fn", PI);
    return 0;
}

上面的PI就是合法的符号常量,宏定义只是简单的文本替换,在预处理阶段完成替换,不属于C语言的关键字定义的常量类型。

6. const定义的常变量

C语言还支持用const关键字定义常变量,常变量具有常量的属性,值不能被修改,但本质上还是变量,有对应的数据类型,例如:

#include <stdio.h>
int main() {
    const int MAX_NUM = 100; // 定义整型常变量MAX_NUM
    const float RATE = 0.05f; // 定义浮点型常变量RATE
    // MAX_NUM = 200; 这行代码会报错,因为常变量的值不能修改
    printf("最大值:%d,利率:%fn", MAX_NUM, RATE);
    return 0;
}

const定义的常变量是C语言合法的常量形式,和#define定义的符号常量不同,常变量有类型检查,更安全。

常见非法常量示例

下面列举一些不符合C语言规范的非法常量,帮助读者避坑:

非法常量错误原因
098八进制常量只能包含0-7数字,8超出范围
2.5e指数形式的e后面必须跟整数,不能省略
'abc'字符常量单引号内只能有一个字符
0x12g十六进制常量只能包含0-9、a-f、A-F,g超出范围
123Ll长整型后缀只能出现一次l或L,重复书写属于非法

合法常量的判断要点

判断一个量是否是C语言合法常量,可以遵循以下要点:

  • 先明确常量的类型,对应类型的书写规则必须满足,比如八进制必须以0开头,指数形式e后必须是整数。
  • 字符常量用单引号,字符串常量用双引号,不能混用,单引号内只能有一个字符,双引号内可以有多个字符。
  • 用#define定义的符号常量,标识符必须符合命名规则,不能包含特殊字符。
  • const定义的常变量必须初始化,且后续不能修改其值。
注意:常量和常变量有区别,#define定义的符号常量没有类型,是文本替换,const定义的常变量有类型,是特殊的变量,两者都属于C语言认可的合法常量范畴。

C语言合法常量常量类型常量定义const关键字修改时间:2026-06-12 07:06:36

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。