찾다

 >  Q&A  >  본문

c++ - strcmp

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

结果为 1

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

迷茫迷茫2885일 전710

모든 응답(2)나는 대답할 것이다

  • 高洛峰

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

    Char는 일반적으로 부호 없는 정수로 간주되고, a[2]는 임의의 값이며, 0보다 크고 0과 같은 두 가지 상황만 있습니다.

    대부분의 경우 a[2]는 '보다 큽니다. ', 1을 반환합니다.

    회신하다
    0
  • 高洛峰

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

    이전 질문과 유사합니다. 해당 질문에 대한 제 답변은 군중에 의해 짓밟혔습니다. 문자열은 문자열이고 문자 배열은 문자 배열입니다. strcmp 함수를 사용하려면 문자열만 전달해야 합니다. . 문자 배열을 사용하려면 수동으로 :

    을 지정해야 합니다. 으아악

    얻는 결과는 실제로 1이 아니라 임의의 값입니다. strcmp 함수는 a의 길이를 모르기 때문에 메모리에 대한 범위를 벗어난 액세스를 수행합니다.

    회신하다
    0
  • 취소회신하다