群友发的一个问题如下:
今天逛百度突然发现个问题:
是道选择题,问输出结果是什么?
试卷上的答案是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'么 还请指教
阅读(4386) | 评论(1) | 转发(0) |