c 语言整型常量有哪些,主要按照进制划分成十进制整型常量八进制整型常量十六进制整型常量三大类,同时还可以通过后缀标记长整型无符号整型这类类型修饰,整型常量就是程序里面直接写死的整数数值,在编译阶段就确定数值,运行期间不能修改,很多新手容易混淆进制前缀规则,八进制必须以数字 0 开头,十六进制必须以 0x 或者 0X 开头,写错前缀编译器就会识别成十进制,数值计算结果直接出错,同时还要注意整型常量有取值范围限制,超过对应类型上限会发生溢出,这也是考试和编码经常考察的知识点。
之所以区分不同进制写法,是因为 c 语言设计的时候兼顾人书写习惯和底层硬件开发需求,十进制方便日常计算,八进制早期和权限位相关,十六进制适合表示内存地址寄存器数值,底层开发使用非常频繁,编译器在源码解析的时候,依靠开头前缀判断这个整型常量属于哪一种进制,再转换成二进制存储到程序里面,底层存储统一都是二进制,源码书写形式只是给开发者阅读使用。
分类详细说明
十进制整型常量,就是我们日常使用的数字,不能以 0 开头,可以带负号表示负数,由 0 到 9 数字组成,比如 10 256 -88,没有特殊前缀,编译器默认识别成十进制。
八进制整型常量,必须以数字 0 作为开头,后面只能写 0 到 7 的数字,不能出现 8 或者 9,比如 012 代表八进制,转换成十进制是 10,如果写成 018,属于非法写法,编译器会报错。
十六进制整型常量,前缀是 0x 或者 0X,后面可以写 0 到 9 还有 a 到 f 或者 A 到 F,字母不区分大小写,比如 0x1F 0Xa8,常用来表示内存地址。
后缀修饰类型,L 或者 l 代表长整型,U 或者 u 代表无符号整型,UL 或者 LU 代表无符号长整型,后缀可以跟在数值后面,用来指定这个整型常量的数据类型,比如 100L 255U。
分类对比表格
| 类别 | 前缀规则 | 允许字符 | 典型示例 |
|---|---|---|---|
| 十进制 | 无前缀 | 0 到 9 | 50 -120 |
| 八进制 | 以 0 开头 | 0 到 7 | 036 |
| 十六进制 | 0x 或者 0X | 0 到 9 a 到 f A 到 F | 0x2A |
| 带后缀整型 | 原有进制加后缀 | 原有进制字符加 L U | 0x100L |
编码识别要点
书写八进制的时候最容易踩坑,很多新手习惯性给数字前面补 0,本意是十进制数字,结果被编译器识别成八进制,造成数值偏差。十六进制字母大小写都可以,但是前缀 0x 里面的 0 不能漏掉,写成 x1F 就不是合法十六进制整型常量。后缀区分大小写,L 和 l 都可以表示长整型,但是小写 l 很容易和数字 1 混淆,实际编码推荐使用大写 L。整型常量默认类型一般是 int,如果数值超过 int 范围,编译器会自动升级成 long 或者 long long,但是这个行为和编译器平台有关,跨平台开发建议主动添加后缀明确类型。
c 语言整型常量有哪些核心就是三种进制书写形式加上类型后缀修饰,掌握前缀规则和取值边界,写代码的时候就可以正确书写各类整数,在底层开发内存操作场景,十六进制整型常量使用频率会明显高于十进制,学习的时候要区分源码书写形式和内存二进制存储,不要把两者混为一谈。
【常见问题】
问题 1 c 语言整型常量有哪些八进制开头是什么
回答 1 c 语言整型常量有哪些里面的八进制整型常量,必须以数字 0 开头,后面只能使用 0 到 7 数字,出现 8 或者 9 就属于非法写法。
问题 2 c 语言整型常量有哪些十六进制前缀是什么
回答 2 c 语言整型常量有哪些里面的十六进制整型常量,前缀是 0x 或者 0X,后面可以搭配 0 到 9 以及大小写字母 a 到 f。
问题 3 c 语言整型常量有哪些后缀 L 代表什么含义
回答 3 c 语言整型常量有哪些后缀 L 代表长整型标记,写在数值末尾,用来指定这个整型常量属于长整型类型。
问题 4 c 语言整型常量有哪些可以是负数吗
回答 4 c 语言整型常量有哪些里面十进制整型常量可以添加负号表示负数,八进制和十六进制源码一般写正数值,负号属于运算符不是进制本身部分。
【免责申明】
本文内容仅用于 c 语言学习参考,不同编译器标准对整型常量范围和类型提升规则存在细微差异,请结合所用编译器测试验证,相关内容不构成绝对标准承诺,相关风险由使用者自行承担。


