>백엔드 개발 >C++ >C의 `printf`와 `scanf`에서 `%i`와 `%d` 형식 지정자의 주요 차이점은 무엇입니까?

C의 `printf`와 `scanf`에서 `%i`와 `%d` 형식 지정자의 주요 차이점은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-03 00:44:09578검색

What's the Key Difference Between `%i` and `%d` Format Specifiers in C's `printf` and `scanf`?

형식 지정자 %i와 %d의 차이점 이해

printf와 같은 형식화된 입력/출력 함수를 활용하는 경우 scanf와 같은 형식 지정자는 유형을 제어하는 ​​데 중요한 역할을 합니다. 인쇄하거나 읽을 데이터의 종류입니다. 이 중에서 %d(정수) 및 %i(정수) 지정자는 신중하게 고려해야 합니다.

printf에서의 사용법

출력 작업의 경우 기능적 차이가 없습니다. %d에서 %i 사이입니다. 둘 다 부호 있는 십진 정수를 출력합니다. 예를 들어, 정수 값 100과 함께 %d 또는 %i를 사용하면 문자열 "100"이 됩니다.

scanf에서의 사용법

그러나 %d 및 %i는 입력 작업에서 분명하게 나타납니다. %d는 부호 있는 10진수 정수를 엄격하게 검색하는 반면, %i는 10진수, 16진수 및 8진수 형식을 지원합니다.

  • 10진수(기본값): %d와 %i는 모두 일련의 십진수(예: 123, -45).
  • 16진수: %i 앞에 "0x"가 붙는 경우(예: 0x123) 16진수 형식으로 입력할 수 있습니다. 반면, %d는 "0x"를 정수 문자열의 일부로 처리합니다.
  • 8진수: 마찬가지로 %i는 접두사가 "0"인 경우(예: 033) 8진수 입력을 지원합니다. ). 대조적으로, %d는 "033"을 십진 정수로 해석합니다.

차이점을 설명하기 위해 다음 예를 고려하십시오.

scanf("%i", &number);

사용자가 "033"을 입력하는 경우 , %i는 이를 8진수로 해석하여 'number' 변수에 값 27을 할당하는 반면, %d는 33을 할당합니다.

위 내용은 C의 `printf`와 `scanf`에서 `%i`와 `%d` 형식 지정자의 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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