84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
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
的长度,它对内存进行了越界访问。