问个关于sizeof的问题

vagromkiller 2004-10-14 04:39:46
在msdn中,查到
4.2.1 Integral Types and Values
The values of the integral types are integers in the following ranges:


For byte, from -128 to 127, inclusive
For short, from -32768 to 32767, inclusive
For int, from -2147483648 to 2147483647, inclusive
For long, from -9223372036854775808 to 9223372036854775807, inclusive
For char, from '\u0000' to '\uffff' inclusive, that is, from 0 to 65535

sizeof(byte)结果为1
sizeof(char)结果为1
sizeof(int)结果为4
sizeof(long)结果为4
sizeof(float)结果为4
sizeof(double)结果为8
sizeof(long double)结果为8

还有
char p1[]="I am"
char p2[]={'I','','a','m'}
sizeof(p1)结果为5
sizeof(p2)结果为4

谁能解释下。
...全文
187 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
freefalcon 2004-10-14
  • 打赏
  • 举报
回复
参见
http://blog.csdn.net/freefalcon/archive/2004/07/28/54839.aspx
educkonline 2004-10-14
  • 打赏
  • 举报
回复
sizeof(char)是1的话,为什么For char, from '\u0000' to '\uffff' inclusive, that is, from 0 to 65535
我想是char 提升为了16位,c语言处理字符时(不是说存储)都是先提升为int或者short的
vagromkiller 2004-10-14
  • 打赏
  • 举报
回复
ywfscu(乌雕) ( ) 信誉:100 2004-10-14 17:04:00 得分: 0


还以为是问类或者结构,函数等的sizeof,俺兴匆匆的跑了接分!


你回答问题就给你分啊
ywfscu 2004-10-14
  • 打赏
  • 举报
回复
还以为是问类或者结构,函数等的sizeof,俺兴匆匆的跑了接分!
vagromkiller 2004-10-14
  • 打赏
  • 举报
回复
字符数组后面不也是自动加一个'\0'?
在32位机下
int long float的都是4位的话。那为什么表示的范围不一样呢。
sizeof(char)是1的话,为什么For char, from '\u0000' to '\uffff' inclusive, that is, from 0 to 65535
xkou 2004-10-14
  • 打赏
  • 举报
回复
对于 int 最大可表示为 0xffffffff,为32位,即为4个字节
其它是相同情况


"I am"返回的是字符串的指针,最后包括一个'\0'
所以为5
p2 为字符数组
快乐鹦鹉 2004-10-14
  • 打赏
  • 举报
回复
这好像没有什么好解释的啊。"I am"其实是五个字符,有个隐藏的'\0'终止符而已
kobefly 2004-10-14
  • 打赏
  • 举报
回复
sizeof(byte)结果为1
sizeof(char)结果为1
sizeof(int)结果为4
sizeof(long)结果为4
sizeof(float)结果为4
sizeof(double)结果为8
sizeof(long double)结果为8
是预定义的
跟cpu有关
kobefly 2004-10-14
  • 打赏
  • 举报
回复
sizeof()
的单位是byte
char p1[]="I am"字符串
四个字符加'\0'
char p2[]={'I','','a','m'}
四个字符

69,378

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧