为了账号安全,请及时绑定邮箱和手机立即绑定

输出结果为什么是7?!不应该是3吗?

输出结果为什么是7?!不应该是3吗?

C
天涯尽头无女友 2023-03-15 21:17:01

#include <stdio.h>
#include <string.h>

void main()
{
char x[]={0xBC,0xDD,0xCA};
int len=strlen(x);
printf("%d\r\n",len);
}

查看完整描述

2 回答

?
白衣染霜花

TA贡献1581条经验 获得超9个赞

sizeof(x)应该是3
strlen(x)就不一定,因为strlen()计算数组元素个数直到遇到'\0'。显然在索引前3个元素时并没有遇到'\0',因此编译器会继续越界索引。

查看完整回答
反对 回复 3天前
?
HUWWW

TA贡献1652条经验 获得超11个赞

strlen是遇到 '\0' 算有多少个字节的,显然,x[]根本没有一个值是0,因此strlen是任意的,要想得到3,应该用sizeof

查看完整回答
反对 回复 3天前
  • 2 回答
  • 0 关注
  • 6 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信