返回信息流新问题。。。
char a[] = {'6','5'}和char b[] = {"65"};是一个意思?就是数组a和b是一样的??
那char c[] = {'65'}运行为啥只显示字符5的十进制呢?怎么不是6??
还有。。int d[] = {'65'};//13877 程序运行显示的d[0]为13877是怎么来的呢?。。。字符65的整型表达??。。。。但是我换成75 是14133。。。66是13878。。找不到规律。。不懂求指教。。谢谢了
-----------------------------------------------------------------
const int length = 50;
char A1[length] = {1,3,5,8,44};
char A2[5] = {2,3,7,15,77};
int a= strlen(A1);
int b= strlen(A2);
为啥a是5,b是13 啊????
这个13是个什么鬼??》。。。。。。。。。。。。
这是一条镜像帖。来源:北邮人论坛 / cpp / #86212同步于 2015/3/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[问题]急求!弱问,一个数组的问题
yu4659
2015/3/30镜像同步33 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
还有14的输出。。b
这是为神马???????????????????????????????????????????
不科学啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
strlen从首地址开始计算长度直到遇到第一个'\0'终止
理论上来说, 你直接对A1 A2用strlen 结果是不确定的,因为你不知道第一个'\0'出现在哪, 结果是5,13,14都是有可能的
貌似 是因为 char A2[5] = {2,3,7,15,77}; 越界了。。。。。。。。。。
我觉得我的错误不止如此。。。。。。。。。改成[6]就可以了。。。。。。。。。。
数组的定义里面 {}大括号的这种末尾也有一个隐含的\0吗?。。。我一直以为只有“”的时候有。。。。。。。。。
请问你知道{}和“”这么定义有啥区别么。。。。。。
还有{2,3,7,15,77} 和{'2','3','7','15','77'}的区别呢??
【 在 moonfighting 的大作中提到: 】
: strlen从首地址开始计算长度直到遇到第一个'\0'终止
: 理论上来说, 你直接对A1 A2用strlen 结果是不确定的,因为你不知道第一个'\0'出现在哪, 结果是5,13,14都是有可能的
之所以A1不返回奇怪的结果,是由于 char A1[length] = {1,3,5,8,44};length是50,那么A1后面没有显示的给出的值就被初始化为0,调用strlen求长度的时候,44后面就遇到了结束符。
那
请问你知道{}和“”这么定义有啥区别么。。。。。。
还有{2,3,7,15,77} 和{'2','3','7','15','77'}的区别呢??
十分感谢
【 在 candywang 的大作中提到: 】
: 之所以A1不返回奇怪的结果,是由于 char A1[length] = {1,3,5,8,44};length是50,那么A1后面没有显示的给出的值就被初始化为0,调用strlen求长度的时候,44后面就遇到了结束符。
【 在 yu4659 的大作中提到: 】
: 暖神不要嘲笑我了。。。。我要冒烟了。。。
简单的解释就是你的第二个数组是定长5的,但这5个元素却没有一个是0。C语言以'\0'作为字符串的终止符,strlen没有找到'\0',自然会继续往后找,之后的内存空间就不是这个数组的一部分了。C语言对非法的指针的操作是不做规定的,也就是,什么都可能发生,从什么都不发生到机器冒烟都有可能。