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里面如果有等号的话,等号右边的东西都是没用的
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)