C++数据类型修饰符详解:signed/unsigned/long/short实战指南
C++允许在char、int、double基础类型前添加修饰符,以更精确适配场景需求。四大修饰符:
- signed(有符号)
- unsigned(无符号)
- long(长整型)
- short(短整型)
适用规则:
signed、unsigned、long、short均可修饰整数基础类型(int及其变体)。signed、unsigned可修饰char。long可修饰double(即long double)。signed、unsigned可作为long、short的前缀,如unsigned long int。
简写形式:声明unsigned、short、long整数时,可省略int。以下等价:
unsigned x;
unsigned int y;
有符号与无符号整数的位模式差异实战
运行以下程序直观理解:
#include <iostream>
using namespace std;
int main() {
short int i; // 有符号短整数(通常16位)
short unsigned int j; // 无符号短整数
j = 50000;
i = j; // 隐式转换:位模式不变,解释方式变
cout << i << " " << j;
return 0;
}
输出:-15536 50000
原理:50000的二进制位模式在无符号短整数中代表50000,但在有符号短整数(补码)中被解释为-15536。这揭示了相同位模式,不同类型解释,导致数值截然不同的核心机制。
类型限定符
提供变量额外语义信息:
| 序号 | 限定符与含义 |
|---|---|
| 1 | const 对象值在程序执行期间不可改变。 |
| 2 | volatile 告知编译器:变量值可能以程序未显式指定的方式改变(如硬件寄存器、中断服务程序、多线程共享变量),禁止优化缓存,每次访问均从内存读取。 |
| 3 | restrict(C99引入,C++作为扩展支持) 限定指针为访问其指向对象的唯一初始途径,助编译器激进优化(如向量化、重排)。 |
C语言
- 深入理解 C++ 数据类型:基础类型、修饰符与最佳实践
- 掌握 C++ 运算符:六大类型全解析与实战示例
- C++ 注释最佳实践:编写可读、可维护代码的注释艺术
- C++ 类模板实战指南:编写灵活的类型无关代码
- C++ 变量与数据类型全解析:int、double、char、string、bool 详细指南
- C++ 运算符全解析:类型、示例与示例程序
- C 语言数据类型完全指南:整型、浮点型、void 与派生类型
- C++编程语言:核心特性全景解析
- C++变量类型详解:内存布局、取值范围与操作集
- C++常量与字面量完全手册:类型、语法与最佳实践
- C++数据类型修饰符详解:signed/unsigned/long/short实战指南
- Java 修饰符详解:类型、用法与最佳实践