c语言求助

[复制链接]
1648|7
 楼主| 1991cjr 发表于 2014-2-18 08:29 | 显示全部楼层 |阅读模式
int main()
{
  char a[1000];
  int i;
  for(i=0; i<1000; i++)
  {
     a[i] = -1-i;
  }
   printf("%d",strlen(a));
   return 0;
}
这一题的答案是255,为什么吗?
嵌入式云终端 发表于 2014-2-18 08:47 | 显示全部楼层
char a[1000],数组有1000个了,你的数据类型char才多少个,还有这个地方a[i] = -1-i,这个在开发混进里面能仿真的,你设置一个变量看一下就好了,很清楚,学会自己找问题哦,呵呵
frlop 发表于 2014-2-18 08:49 | 显示全部楼层
把 a[]改成int型试试。
xinzha 发表于 2014-2-18 09:54 | 显示全部楼层
普通字符串认为遇到0x0就是字符串的结束,你自己算一下当i等于多少的时候,a[i]的值为0就明白了。

评分

参与人数 1威望 +1 收起 理由
1991cjr + 1 赞一个!

查看全部评分

WYT440 发表于 2014-2-18 10:01 | 显示全部楼层
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0'停止。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ZhangStudy 发表于 2014-2-18 11:29 | 显示全部楼层
-1 = 0xFFFFFFFF ;
255 = 0xFF ;
-1 - 255 = 0xFFFFFF00 ;
截取后8位,结果是0
gongshi 发表于 2014-2-19 19:46 | 显示全部楼层
hellonihaoma 发表于 2014-2-23 21:25 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

42

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部