변환 지정자의 미묘한 차이 이해: 형식화된 IO 함수의 %i 대 %d
형식화된 입력/출력 영역( IO) printf 및 scanf와 같은 함수, 변환 지정자는 입력 또는 출력 형식을 안내하는 데 중추적인 역할을 합니다. 이러한 지정자 중 %i와 %d는 유사점과 차이점에 대한 의문을 제기하는 경우가 많습니다.
출력: 균일한 존재
with와 같은 출력 작업에 사용되는 경우 printf, %i와 %d는 모두 동일하게 동작합니다. 이들은 일관되게 10진수 형식의 정수를 나타냅니다. 예를 들어 다음 코드 조각은 동일한 출력을 보여줍니다.
int num = 123; printf("Decimal representation (%%d): %d\n", num); printf("Decimal representation (%%i): %i\n", num);
Input: Distinctive Behaviors
그러나 scanf 또는 유사한 함수를 사용하여 입력 작업에 배포하는 경우 %i와 %d는 뚜렷한 차이를 보입니다. %d는 정수를 부호 있는 십진수로만 검색합니다. 이와 대조적으로 %i는 10진수 해석을 유지하지만 16진수(접두사가 0x임) 및 8진수(접두사가 0임) 입력도 포함합니다.
이러한 차이를 설명하려면 다음 예를 고려하세요.
int num; scanf("%%d", &num); // Only accepts decimal input scanf("%%i", &num); // Accepts decimal, hexadecimal, or octal input
사용자가 033을 입력하면 scanf는 %i를 사용하여 27로 해석합니다(8진수로 처리하므로). 33은 %d(엄격한 소수)입니다.
요약하면...
%i와 %d는 형식화된 IO에서 비슷한 목적을 공유하지만 차이점은 다음과 같습니다. 입력 작업 중 동작. %d는 부호 있는 10진수 입력으로 제한되는 반면, %i는 10진수와 기타 기본 형식(16진수 및 8진수)을 모두 원활하게 처리합니다. 이러한 이해는 프로그램의 특정 요구 사항에 맞게 입력 작업을 조정하는 데 중요합니다.
위 내용은 C\의 형식화된 입력/출력 함수에서 `%i`와 `%d`의 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!