【C++教程】C++中的基本数据类型

以下是 C++ 基本数据类型的定义、大小(常见实现)及其取值范围的总结表。需注意,具体大小可能因编译器和平台而异(如 32 位 vs 64 位系统),建议使用 sizeof()<climits><cfloat> 头文件中的宏获取具体值。


整数类型

类型 大小(字节) 取值范围(常见实现) 标准最小要求
signed char 1 -128 到 127 至少 8 位(-2⁷ 到 2⁷-1)
unsigned char 1 0 到 255 至少 8 位(0 到 2⁸-1)
short 2 -32,768 到 32,767 至少 16 位(-2¹⁵ 到 2¹⁵-1)
unsigned short 2 0 到 65,535 至少 16 位(0 到 2¹⁶-1)
int 4 -2,147,483,648 到 2,147,483,647 至少 16 位(通常为 32 位)
unsigned int 4 0 到 4,294,967,295 int 的无符号版本
long 4 或 8 -2³¹ 到 2³¹-1(4 字节)或更大 至少 32 位
unsigned long 4 或 8 0 到 2³²-1(4 字节)或更大 long 的无符号版本
long long 8 -9,223,372,036,854,775,808 到 ... 至少 64 位(-2⁶³ 到 2⁶³-1)
unsigned long long 8 0 到 18,446,744,073,709,551,615 0 到 2⁶⁴-1

字符类型

类型 大小(字节) 说明
char 1 可能是 signed charunsigned char(由编译器决定)
wchar_t 2 或 4 宽字符,支持更大字符集(如 Unicode)

浮点类型

类型 大小(字节) 取值范围(IEEE 754 常见值) 精度
float 4 ±1.18e-38 到 ±3.4e38 6-7 位小数
double 8 ±2.23e-308 到 ±1.79e308 15-16 位小数
long double 8, 12, 16 范围 ≥ double,具体依赖实现 通常 ≥ double

布尔类型

类型 大小(字节) 取值范围
bool 1(通常) truefalse

注意事项

  1. 平台依赖性

    • intlong 的大小可能因系统不同而变化(如 Windows 64 位中 long 为 4 字节,Linux 64 位中为 8 字节)。
    • 使用 sizeof(type) 直接获取当前平台的大小(如 sizeof(int))。
  2. 标准头文件

    • <climits> 包含整数类型的范围宏(如 INT_MAXLLONG_MIN)。
    • <cfloat> 包含浮点类型的范围宏(如 FLT_MAXDBL_EPSILON)。
  3. 固定宽度类型

    C++11 引入了 <cstdint> 中的固定大小类型(如 int32_tuint64_t),明确指定位数。


示例代码

cpp 复制代码
#include <iostream>
#include <climits>
#include <cfloat>

int main() {
    std::cout << "int 大小: " << sizeof(int) << " 字节" << std::endl;
    std::cout << "int 最大值: " << INT_MAX << std::endl;
    std::cout << "double 最小值: " << DBL_MIN << std::endl;
    return 0;
}

如果需要更精确的平台特定信息,请结合编译器和系统文档进行验证。

相关推荐
烟雨柳成烟2 分钟前
C++学习Day0:c++简介
开发语言·c++·qt·学习
XINVRY-FPGA10 分钟前
XC6SLX100T-2FGG484I 赛灵思 XilinxFPGA Spartan-6
c++·人工智能·嵌入式硬件·阿里云·ai·fpga开发·fpga
SMiLe17 分钟前
CMake学习笔记
c++
末央&38 分钟前
【C++】特化妙技与分文件编写 “雷区”
开发语言·c++·算法
一个天蝎座 白勺 程序猿1 小时前
Python(19)Python并发编程:深入解析多线程与多进程的差异及锁机制实战
开发语言·python
暖阳华笺1 小时前
Leetcode刷题 由浅入深之哈希表——242. 有效的字母异位词
数据结构·c++·算法·leetcode·哈希表
GSDjisidi1 小时前
日本IT|车载C#开发工程师的前途及职业发展
开发语言·c#
卓豪终端管理1 小时前
如何安全地管理固定功能设备?
java·大数据·开发语言·网络·人工智能·安全
敲上瘾2 小时前
线程池的封装(c/c++)
linux·服务器·c++·算法·缓存·池化技术
进阶的小木桩2 小时前
VSTO幻灯片退出播放(C#模拟键盘鼠标的事件)
开发语言·c#·计算机外设