首页  >  问答  >  正文

c++ - strcmp

char a[2] = { '1','2' };
printf("%d", strcmp(a, "12"));

结果为 1

一个没有结束符,一个有结束符,为什么没有的比有的大?

迷茫迷茫2716 天前592

全部回复(2)我来回复

  • 高洛峰

    高洛峰2017-04-17 15:05:10

    char 一般被当作无符号整数,a[2]是个随机值,只有大于0 和 等于0 两种情况。

    多数时候,a[2]大于'',返回1。

    回复
    0
  • 高洛峰

    高洛峰2017-04-17 15:05:10

    与之前一个问题类似——那个问题,我的答案还被吃瓜群众踩了一脚——字符串是字符串,字符数组是字符数组。strcmp 函数需要你传入的是字符串,因为只有字符串才有 。如果坚持用字符数组,那就需要手动给它一个 :

    char a[] = {'1', '2', 'rrreee'};
    printf("%d", strcmp(a, "12"));

    你得到的结果其实并非 1,而是一个随机值。因为 strcmp 函数并不知道 a 的长度,它对内存进行了越界访问。

    回复
    0
  • 取消回复