黑马程序员技术交流社区

标题: sizeof [打印本页]

作者: 每天进步一点点    时间: 2014-6-24 17:03
标题: sizeof
本帖最后由 每天进步一点点 于 2014-6-25 13:30 编辑

int c = sizeof('a'); 请问c是几,为什么?

作者: 曹雨    时间: 2014-6-24 18:03
1,sizeof计算开辟的内存空间大小,一个字符'a'自然是1
作者: 每天进步一点点    时间: 2014-6-24 18:27
曹雨 发表于 2014-6-24 18:03
1,sizeof计算开辟的内存空间大小,一个字符'a'自然是1

我也以为是1,但答案是4,你可以运行一下
作者: 小坏坏    时间: 2014-6-24 18:39
在32位计算机系统中,一个指针变量的返回值是4字节,但是,在64位系统中指针变量的sizeof结果为8字节
而传入sizeof的恰恰是'a'所占的内存
作者: libra    时间: 2014-6-24 19:01


sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。注意是字节数!!
作者: 完美世界    时间: 2014-6-24 19:53
字符是按其代码(整数)形式存储的。字符常量在内存中是以整数形式存储的,默认是Int类型。当你计算sizeof('a')时,实际计算的是整数97的内存空间,所以是4个字节。
使用char定义的变量其内存空间才是1个字节。
作者: 无尽可能    时间: 2014-6-24 20:01
楼上应该是正解。
作者: 但愿''专注..    时间: 2014-6-24 22:37
1。。。。。。。。
作者: 骑着飞机去看海    时间: 2014-6-24 23:09
恩,楼上这已经解释的很清楚了,楼主还有哪里不明白?
作者: 夏沫的黄昏′    时间: 2014-6-25 08:24
32位计算机系统中,一个指针变量的返回值是4字节,但是,在64位系统中指针变量的sizeof结果为8。

作者: 每天进步一点点    时间: 2014-6-25 13:29
谢谢各位,已经明白了
作者: a1130003724    时间: 2014-6-25 14:34
路过沙发
作者: 曹雨    时间: 2014-6-25 16:38
每天进步一点点 发表于 2014-6-24 18:27
我也以为是1,但答案是4,你可以运行一下

{:3_50:}学习到了谢谢- -{:3_48:}
作者: mingjixiaohui    时间: 2014-6-25 17:42
我个人认为sizeof('a')中的‘a’是个字符对象,如果a不是字符变量的话,a就相当于97,为int 类型,也就相当于sizeof(int),在32位系统编译器下,也就会输出4




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2