C++中的sizeof操作符

本文详细介绍了C++中的sizeof操作符,包括其基本用法、如何获取不同类型的数据大小,以及如何利用它来提高程序的易维护性和优化内存使用。此外还探讨了在数组和字符串操作中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1. sizeof操作符

sizeof操作符用于获得一个表达式的类型的大小,表达式可以是一个运算式、变量或类型,当sizeof后面是单个标识符时,不需要括号。如果sizeof表达式作为整个表达式的一部分时最好使用括号,除非你很清楚各运算符的优选级。sizeof的优先级是一元运算符中最低的,但高于所有二元运算符。使用sizeof获得C++内置类型的值可能为(不同CPU、不同编译器都可能不同):

数据类型

sizeof

备注

bool

1

一般都是1,尚未发现不为1的编译器

char

unsigned char

signed char

1

C++标准定义

short [int]

unsigned short [int]

shigned short [int]

2

C++标准规定至少为不比char小,绝大多数编译器都是2,尚未发现有编译器为其它值

int

unsigned int

signed int

1,2,4,8

不同CPU不同,8位单片机可能为1(可能会有编译器选项设为4);16位单片机为2(可能有编译器选项改为4);32位CPU一般为4,64位CPU多数编译器也默认为4,可能有编译选项设为8

long [int]

unsigned long [int]

signed long [int]

4, 8

C++标准规定至少为4,但绝大多数编译器也都是4,但有些编译器提供了编译选项,可以设为8

long long [int]

unsigned long long [int]

4, 8

一般为8,但在一些嵌入式设备的编译器中可能只支持到4个字节的精度

float

4

绝大多数编译器都实现为4个字节的精度

double

4,8

绝大多数编译器都实现为8个字节的精度,但有些嵌入式编译器可能只支持4个字节

long double

4, 8, 12

一般为12,但有些编译器特别是嵌入式编译器可能只支持8字节精度,甚至只支持4字节精度

void*, char*, short*, int* , boo*, long*, long long*, float*, double*, long double*

2,4,8

在8、16位单片机上为2,在32位机上为4,在64位机上为64

enum

4,8

一般为4,但有的编译器可以支持enum的值定义为long long型扩展到8字节(如VC++ 2010、gcc 4.3.4),有的编译器严格检查定义的值,超过4字节时则给出编译错误(如C++Builder 2010),C++标准并没有规定具体大小。

1.1.1. 提高程序的易维护性

合更地使用sizeof可以更好的提高软件的易维护性,例如下面的代码,当我们添加或删除数组中的元素时for循环里的循环条件无需修改。

char* arr[] = {"str1", "str2", "str3", "str4"};

for(int i=0; i

cout<<"arr["<

std::size_t len = static_strlen("Hello") ;

std::cout<<"length of '"<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值