小弟非程序员,最近在苦学 C 语言。
看到 https://blog.csdn.net/littesss/article/details/70148523 中
解析 a占一个字节 \377 占一个字节 7占一个字节,这个7就是一个字符7
我自己电脑运行和上面截图一致。
但是解析我就看不懂了,“a\377” 不应该是两个字节吗?
a 一个,\377 代表的 ascii code 255 码一个字节 https://www.ascii-code.com/255。
解析中的最后一个 7 哪里来的?
我用 google 查了没有相关,Stack Overflow 没有类似的。
可能问题太幼稚了,但望不吝赐教。
你看的解析是瞎说的,CSDN 你也敢信?排除干扰用正常字符实验下就知道了
#include <stdio.h>
#include <string.h>
int main() {
char ch[] = "aa";
printf("%d\n",sizeof(ch));
printf("%d\n",strlen(ch));
printf("%s",ch);
}
结果
3
2
aa
sizeof
是 3 是因为 C string 用 null 字符做为结束。你用
char ch[] = { 'a', 'a'};
sizeof
就会是 2,当然此时 strlen
结果就不可靠了。
StackOverflow 上搜不到?没办法,瞎说的当然是这样的。
建议去读 The C programming Language,中译本 C程序设计语言
5 个赞
zhscn
3
补充一点:sizeof
是 operator 而 strlen
是由 string.h
提供的函数。所以这么写也是合法的:
#include <stdio.h>
#include <string.h>
int main() {
char ch[] = "aa";
printf("%d\n",sizeof ch);
printf("%d\n",strlen(ch));
printf("%s",ch);
}
1 个赞