|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我看不懂答案,
- #include<stdio.h>
- #include<string.h>
- int main(void)
- {
- static char p[] = { 'a','b','c' }, q[10] = { 'a','b','c' };
- printf("%d %d\n", strlen(p), strlen(q));
- return 0;
- }
复制代码
然而这是实际测试结果
代码:
- #include <stdio.h>
- #ifdef __cplusplus
- #include <iostream>
- #endif
- int main() {
- static char a[]={'a','b','c'};
- printf("sizeof(a)=%d\n",sizeof(a));
- printf("strlen(a)=%d\n",strlen(a));
- static char b[]={'a','b','c','d'};
- printf("sizeof(b)=%d\n",sizeof(b));
- printf("strlen(b)=%d\n",strlen(b));
-
- #ifdef __cplusplus
- system("pause");
- #endif
- }
复制代码
Dev-C++ 5.11下使用C语言的测试结果:
sizeof(a)=3
strlen(a)=7
sizeof(b)=4
strlen(b)=4
VS2017下使用C++的测试结果:
sizeof(a)=3
strlen(a)=3
sizeof(b)=4
strlen(b)=4
可以看到,这结果是与编译器相关的,而且在DevC下,字符串a的结束符是一路搜寻到字符串b的结尾了,并不是所有编译器都会在这种声明方法的字符串后加0;
所以结果应该是B
|
|