下面将定义什么?

jpf2008 2008-03-19 02:31:21
static unsigned char IP[] =
{
58,50,42,34,26,18,10, 2,
60,52,44,36,28,20,12, 4,
62,54,46,38,30,22,14, 6,
64,56,48,40,32,24,16, 8,
57,49,41,33,25,17, 9, 1,
59,51,43,35,27,19,11, 3,
61,53,45,37,29,21,13, 5,
63,55,47,39,31,23,15, 7,
};
...全文
92 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
guzhilei1986 2008-03-19
  • 打赏
  • 举报
回复
58是一个数字,内存里存的就是58的二进制。
‘5’能就是一个字符了。内存里存的是5的ascii码。
tsocpp 2008-03-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zixin_yu 的回复:]
因为 IP 定义的为 char 型的,因此该数组中的内存在存储时会将每一个整数项变为 char 型来存储.例如第一排的数据:
58,50,42,34,26,18,10, 2,
内存中存储的十六进制即为:
3A,32,2A,22,1A,12,0A,02
要以原有数字输出是可以办到的,因为 C 中的 char 型与 int 型是可以转化的,你只需要以 %d 的形式输出即可
for(int i = 0; i < sizeof(IP); i++)
{
printf("%d,", IP[i]);
}
[/Quote]


我觉得应该是:
for(int i = 0; i < sizeof(IP)/sizeof(IP[0]);i++)
{
printf("%d,", IP[i]);
}

而且不管定义的是char型还是int型,存在内存中的都应该是它的ascii值
zonghenglls 2008-03-19
  • 打赏
  • 举报
回复
4楼正解
zixin_yu 2008-03-19
  • 打赏
  • 举报
回复
因为 IP 定义的为 char 型的,因此该数组中的内存在存储时会将每一个整数项变为 char 型来存储.例如第一排的数据:
58,50,42,34,26,18,10, 2,
内存中存储的十六进制即为:
3A,32,2A,22,1A,12,0A,02
要以原有数字输出是可以办到的,因为 C 中的 char 型与 int 型是可以转化的,你只需要以 %d 的形式输出即可
for(int i = 0; i < sizeof(IP); i++)
{
printf("%d,", IP[i]);
}
jpf2008 2008-03-19
  • 打赏
  • 举报
回复
如何要把这个数组输出,如何实现。
我知道用一个FOR语句循环就可以。我想知道,存进数组内存的是什么?
可以输出原有数字吗?
paidfighting 2008-03-19
  • 打赏
  • 举报
回复
。。。一个数组啊,这有什么问题
zhangbin_115 2008-03-19
  • 打赏
  • 举报
回复
数组

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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