>  기사  >  백엔드 개발  >  \"456\" 1 이 C에서 \"56\" 을 출력하는 이유는 무엇입니까?

\"456\" 1 이 C에서 \"56\" 을 출력하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-01 08:01:02399검색

Why does

"456" 1의 출력 이해

C 코드에서 "456" 1이라는 표현이 "457" 대신 "56"을 출력하면 혼란스러워 보일 수 있습니다. " 이 동작을 이해하려면 코드의 복잡성을 자세히 살펴봐야 합니다.

C에서 문자열은 문자 배열로 저장되며 리터럴 "456"은 배열 {'4', '5'와 동일합니다. , '6', ' '}. 산술식에 "456"을 사용하면 암시적 변환이 발생합니다. 배열은 첫 번째 요소에 대한 포인터(기본적으로 '4'에 대한 포인터)로 분해됩니다.

이제 이 포인터에 1을 추가하면 다음 문자인 '5'로 이동합니다. std::cout이 const char*(문자 배열에 대한 포인터)를 발견하면 이를 null로 끝나는 문자열로 해석합니다. 널 종결자 앞에 문자 '6'이 있기 때문에 하위 문자열 "56"만 인쇄됩니다.

요약하면 문자 배열 "456"의 포인터 연산은 첫 번째 문자 '4'를 효과적으로 건너뜁니다. 나머지 숫자를 인쇄하여 "56"을 출력합니다.

위 내용은 \"456\" 1 이 C에서 \"56\" 을 출력하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.