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