前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sizeof遇到自增的问题

sizeof遇到自增的问题

作者头像
无敌清风蓝
发布2024-06-04 19:51:51
730
发布2024-06-04 19:51:51
举报
文章被收录于专栏:无敌清风蓝无敌清风蓝

1.导言

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

2.场景

有这个代码

代码语言:javascript
复制
int a = 5;
sizeof(a++);
cout << a << endl;

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

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

如果把代码改为

代码语言:javascript
复制
sizeof(b = a + 5);

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

3.原理

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023/08/02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.导言
  • 2.场景
  • 3.原理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档