sizeof问题
来源:互联网 发布:淘宝怎么上架虚拟商品 编辑:程序博客网 时间:2024/05/21 17:33
#include <stdio.h> int main() { int i; i = 10; printf("%d\n", i); printf("%d\n", sizeof(i++); printf("%d\n", i); return 0; }
这个程序输出什么?
一般人是这个程序会输出
10
4
11
但是却出人意外的输出了
10
4
10
这个问题实际上就是对于sizeof操作符的使用问题, sizeof不是函数,只是一种操作符,对于其后的表达式,根本不会进行计算的。sizeof当预处理看就行了,它后面括号里的东西,根本不求值,只根据C的一堆规则判断结果类型,然后返回结果类型的大小,,
C++标准:
“
5.3.3 sizeof
The sizeof operator yields the number of bytes in the object representation of its operand. The operand is either an expression, which is anunevaluated operand (Clause 5), or a parenthesized type-id.”
也就是说,如果sizeof的操作数是一个表达式的话,这个表达式时不会被计算的。
更有甚者
#include <stdio.h> int main() { int i; i = 10; printf("%d\n", i); printf("%d\n", sizeof(i=5); printf("%d\n", i); return 0; }
点击打开链接
- sizeof问题
- sizeof问题
- sizeof问题
- sizeof问题
- sizeof问题
- sizeof()问题
- sizeof问题
- sizeof问题
- sizeof和sizeof的问题
- SIZEOF的问题
- sizeof 的相关问题
- 再谈sizeof()的问题
- 关于sizeof的问题
- SIZEOF( )的问题
- 有关sizeof的问题
- sizeof相关系列问题
- sizeof struct 问题
- sizeof的问题
- oracle更换表空间 blob字段带来的问题
- JS去除两边空格
- android组件——BroadCastReceiver(简例)
- 关于抱怨
- c语言基础(三)之数据交换
- sizeof问题
- mysql忘记密码
- 22.windbg-ln、伪寄存器(Pseudo-Register Syntax)、自定义伪寄存器
- 速达软件中建账套时注意事项
- 升级Redhat Linux 9.0内核到2.6.18
- Opa指导手册:第四章 维基(Wiki)示例
- 程序装载及执行说明
- Windows 下安装Gnumake
- UINavigationController使用详解