84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
char a[2] = { '1','2' }; printf("%d", strcmp(a, "12"));
结果为 1
一个没有结束符,一个有结束符,为什么没有的比有的大?
业精于勤,荒于嬉;行成于思,毁于随。
char 一般被当作无符号整数,a[2]是个随机值,只有大于0 和 等于0 两种情况。
多数时候,a[2]大于'\0',返回1。
与之前一个问题类似——那个问题,我的答案还被吃瓜群众踩了一脚——字符串是字符串,字符数组是字符数组。strcmp 函数需要你传入的是字符串,因为只有字符串才有 \0。如果坚持用字符数组,那就需要手动给它一个 \0:
char a[] = {'1', '2', '\0'}; printf("%d", strcmp(a, "12"));
你得到的结果其实并非 1,而是一个随机值。因为 strcmp 函数并不知道 a 的长度,它对内存进行了越界访问。
a
char 一般被当作无符号整数,a[2]是个随机值,只有大于0 和 等于0 两种情况。
多数时候,a[2]大于'\0',返回1。
与之前一个问题类似——那个问题,我的答案还被吃瓜群众踩了一脚——字符串是字符串,字符数组是字符数组。strcmp 函数需要你传入的是字符串,因为只有字符串才有 \0。如果坚持用字符数组,那就需要手动给它一个 \0:
你得到的结果其实并非 1,而是一个随机值。因为 strcmp 函数并不知道
a
的长度,它对内存进行了越界访问。