Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4511018
  • 博文数量: 356
  • 博客积分: 10458
  • 博客等级: 上将
  • 技术积分: 4734
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-24 14:59
文章分类

全部博文(356)

文章存档

2020年(17)

2019年(9)

2018年(26)

2017年(5)

2016年(11)

2015年(20)

2014年(2)

2013年(17)

2012年(15)

2011年(4)

2010年(7)

2009年(14)

2008年(209)

分类: C/C++

2008-03-26 19:01:30

群友发的一个问题如下:
 
今天逛百度突然发现个问题:
是道选择题,问输出结果是什么?
试卷上的答案是3 3,提问的家伙说他认为ta老师的错了。
#include
main()
{ char p[]={'a', 'b', 'c'}, q[10]={'a', 'b', 'c'};
printf("%d %d\n", strlen(p), strlen(q));
}
我就奇怪了,他怎么不自己在编译器上试试不就知道了。
于是,我在TC上试,结果是3 3没错。
但是,我本能的后面加个getch();
结果7 3,我也不知道为什么了,大家有兴趣研讨下么?
虽然我们大多人现在都不用C了,研究出个什么结果来对谁都是有好处的。
 
===========================================================
我在VC6.0上调的是7,3  郁闷了一个下午.  最后得出结论,不知道是不是草率的  ....因为跟turbo c的结果不一样  :
 
应该跟环境有关 VC6.0 char p[]={'a', 'b', 'c'}, q[10]={'a', 'b', 'c'};   strlen(p)这本身就是一个错误
数组p系统没给加上结束标识符'\0' 而q给加上了  而strlen()只能用于字符串,且必须以'\0'结束的  strlen(p)遇到数组p之外的一个'\0'返回一个值的
turbo c会自动加'\0'么  还请指教
 
 
阅读(4377) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-06-15 11:14:02

不会,strlen(p) 的输出不确定,他会一直往下找,直到在内存中找到'\0'为止