%i 및 %d를 사용한 포맷된 IO: 자세한 비교
printf 및 scanf와 같은 포맷된 IO 기능을 활용할 때 미묘한 차이점 이해 형식 지정자 사이가 중요합니다. 두 개의 공통 지정자 %d와 %i는 서로 다른 동작을 완전히 파악하지 않으면 혼란을 초래할 수 있습니다.
출력: 동일한 기능
%i와 %인 경우 d는 출력 목적으로 사용됩니다(예: printf). 둘 사이에는 눈에 띄는 차이가 없습니다. 두 지정자는 10진수, 16진수 또는 8진수인지 여부에 관계없이 동일한 출력을 생성합니다.
입력: 구별이 나타나는 곳
그러나 입력에 이러한 지정자를 사용하는 경우 (즉, scanf에서는) 명확한 구별이 발생합니다. %d는 입력을 부호 있는 10진수 형식의 정수로 해석합니다. 이는 -512와 같은 숫자가 올바르게 인식되고 음수 값이 할당된다는 것을 의미합니다.
반면 %i는 기본적으로 십진수 해석을 사용하지만 보다 유연한 특성을 나타냅니다. 이는 10진수 정수를 처리할 뿐만 아니라 관련 접두사가 앞에 오는 경우 16진수 및 8진수 값도 수용합니다. 예를 들어 0x1A는 16진수로 해석되고 023은 8진수로 인식됩니다.
실제 예
입력 문자열 "033"을 고려해보세요. scanf가 %d를 사용하여 이를 읽으면 이를 10진수 33으로 처리합니다. 그러나 %i를 사용하면 scanf는 선행 0을 8진수 접두어로 인식하여 정수 27이 변수에 할당됩니다.
결론
요약하면 %i와 %d는 형식화된 IO 함수의 출력에 대해 비슷한 성능을 보이지만 입력에 대한 다양한 동작. %d는 부호 있는 10진수로 입력을 제한하는 반면, %i는 16진수 및 8진수 값을 수용하여 더 많은 융통성을 제공합니다. C 프로그램에서 정확한 입력 처리를 위해서는 이러한 구별을 이해하는 것이 필수적입니다.
위 내용은 C\의 포맷된 I/O의 %i 대 %d: 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!