c++ - strcmp
迷茫
迷茫 2017-04-17 15:03:10
0
2
656
char a[2] = { '1','2' };
printf("%d", strcmp(a, "12"));

结果为 1

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(2)
小葫芦

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

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

小葫芦

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

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

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿