A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 每天进步一点点 中级黑马   /  2014-6-24 17:03  /  2489 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 每天进步一点点 于 2014-6-25 13:30 编辑

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

13 个回复

倒序浏览
1,sizeof计算开辟的内存空间大小,一个字符'a'自然是1
回复 使用道具 举报
曹雨 发表于 2014-6-24 18:03
1,sizeof计算开辟的内存空间大小,一个字符'a'自然是1

我也以为是1,但答案是4,你可以运行一下
回复 使用道具 举报
在32位计算机系统中,一个指针变量的返回值是4字节,但是,在64位系统中指针变量的sizeof结果为8字节
而传入sizeof的恰恰是'a'所占的内存
回复 使用道具 举报


sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。注意是字节数!!
回复 使用道具 举报
字符是按其代码(整数)形式存储的。字符常量在内存中是以整数形式存储的,默认是Int类型。当你计算sizeof('a')时,实际计算的是整数97的内存空间,所以是4个字节。
使用char定义的变量其内存空间才是1个字节。
回复 使用道具 举报 1 0
楼上应该是正解。
回复 使用道具 举报
1。。。。。。。。
回复 使用道具 举报
骑着飞机去看海 来自手机 中级黑马 2014-6-24 23:09:43
9#
恩,楼上这已经解释的很清楚了,楼主还有哪里不明白?
回复 使用道具 举报
32位计算机系统中,一个指针变量的返回值是4字节,但是,在64位系统中指针变量的sizeof结果为8。
回复 使用道具 举报
谢谢各位,已经明白了
回复 使用道具 举报
路过沙发
回复 使用道具 举报
每天进步一点点 发表于 2014-6-24 18:27
我也以为是1,但答案是4,你可以运行一下

{:3_50:}学习到了谢谢- -{:3_48:}
回复 使用道具 举报
我个人认为sizeof('a')中的‘a’是个字符对象,如果a不是字符变量的话,a就相当于97,为int 类型,也就相当于sizeof(int),在32位系统编译器下,也就会输出4
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马