sizeof遇到自增的情况

简介: sizeof遇到自增的情况

1.导言

本来是在C++群里回答一个很简单的类型转换后判断字节的问题,后来发现代码中有个点还蛮有意思的,所以记录下来

2.场景

有这个代码

int a = 5;
sizeof(a++);
cout << a << endl;

我发现a竟然输出的5,来想自增后不是变成6吗

这是因为 sizeof 是一个编译时运算符,它不会对其操作数进行求值。在这个例子中,sizeof(a++) 只会返回变量 a 的大小,而不会执行 a++ 这个操作。所以,当输出 a 的值时,它仍然是初始值 5。

如果把代码改为

sizeof(b = a + 5);

b不会变成10,和上一个例子一样,sizeof 是一个编译时运算符,它不会对其操作数进行求值。所以,即使你写 sizeof(b = a + 6)b 的值也不会改变

3.原理

sizeof 是一个编译时运算符,这意味着它在编译时就会计算出结果。编译器会根据操作数的类型来确定 sizeof 的结果,而不是根据操作数的值。因此,即使操作数是一个表达式,sizeof 也不会对它进行求值。

也可以理解为sizeof里面如果有等号的话,等号右边的东西都是没用的

相关文章
|
存储 编译器 Linux
匿名结构体类型、结构体的自引用、结构体的内存对齐以及结构体传参
匿名结构体类型、结构体的自引用、结构体的内存对齐以及结构体传参
226 0
|
存储 数据安全/隐私保护
RPMB说明与使用(Replay Protected Memory Block)
RPMB说明与使用(Replay Protected Memory Block)
4495 0
|
Web App开发 搜索推荐 Android开发
AppsFlyer 研究(三)OneLink平台归因、跳转、深度链接
AppsFlyer 研究(三)OneLink平台归因、跳转、深度链接
2166 0
|
安全 编译器 C语言
深入分析宏定义的优势、局限性及最佳实践。
深入分析宏定义的优势、局限性及最佳实践。
|
12月前
|
人工智能 大数据 测试技术
自主和开放并举 探索下一代阿里云AI基础设施固件创新
12月13日,固件产业技术创新联盟产业峰会在杭州举行,阿里云主导的开源固件测试平台发布和PCIe Switch固件技术亮相,成为会议焦点。
|
存储 运维
USB3.2 摘录(七)
USB3.2 摘录(七)
228 1
|
缓存 算法 C语言
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
310 0
|
C++
SDL基础使用02(加载bmp图片、纹理和渲染)
这篇文章介绍了如何使用SDL库在C++中加载和显示BMP图片,以及如何使用纹理和渲染器进行更高级的图形处理。
222 2
|
搜索推荐 算法
数据结构与算法学习十四:常用排序算法总结和对比
关于常用排序算法的总结和对比,包括稳定性、内排序、外排序、时间复杂度和空间复杂度等术语的解释。
179 0
数据结构与算法学习十四:常用排序算法总结和对比
|
Java 关系型数据库 MySQL