logo

C 언어의 %d와 %i 형식 지정자의 차이점

형식 지정자는 화면에 인쇄할 데이터 유형이나 표준 입력에서 검색할 데이터 유형을 정의하는 데 사용되는 특수 문자 또는 문자 시퀀스입니다. 형식 지정자는 '%' 문자로 시작하고 그 뒤에 다양한 데이터 유형에 대한 문자 순서가 옵니다.

즉, 어떤 유형의 데이터를 저장하고 어떤 데이터를 인쇄할지 알려줍니다. 형식 지정자는 주로 scanf() 및 printf() 함수와 함께 사용됩니다.



예를 들어, 다음을 사용하여 정수를 읽고 인쇄하려는 경우 스캔프() 및 printf() 함수에서는 %i 또는 %d가 사용되지만 둘 다 미묘한 차이가 있습니다. %나 그리고 %디 형식 지정자 .

%d는 부호 있는 십진 정수를 지정하고 %i는 다양한 진수의 정수를 지정합니다.

'%d' 및 '%i'는 printf()와 유사하게 동작합니다.

printf와 함께 사용할 때 %i와 %d 형식 지정자 사이에는 차이가 없습니다.



다음 예를 고려하십시오.






// C program to demonstrate> // the behavior of %i and %d> // with printf statement> #include> int> main()> {> >int> num = 9;> >// print value using %d> >printf>(>'Value of num using %%d is = %d '>, num);> >// print value using %i> >printf>(>'Value of num using %%i is = %i '>, num);> >return> 0;> }>

>

>

산출

Value of num using %d is = 9 Value of num using %i is = 9>

%d 및 %i 동작은 scanf()와 다릅니다.

%d는 진수를 10으로 가정하고 %i는 진수를 자동으로 감지합니다.

모니터 화면 크기 확인하는 방법

따라서 두 지정자는 입력 함수와 함께 사용될 때 다르게 동작합니다. 따라서 012의 값은 %i에서는 10이 되고 %d에서는 12가 됩니다.

    %d는 정수 값을 부호 있는 십진 정수로 사용합니다. 즉, 양수 값과 함께 음수 값을 사용하지만 값은 십진수여야 하며 그렇지 않으면 쓰레기 값을 인쇄합니다.
    ( 메모 : 입력이 012와 같은 8진수 형식인 경우 %d는 0을 무시하고 12로 입력을 받습니다.
    %i는 10진수, 16진수 또는 8진수 유형의 정수 값으로 정수 값을 사용합니다.
    16진수 형식으로 값을 입력하려면 0x 앞에 값을 입력해야 하고, 8진수 형식으로 값을 입력하려면 0 앞에 값을 입력해야 합니다.

다음 예를 고려하십시오.




// C program to demonstrate the difference> // between %i and %d specifier> #include> int> main()> {> >int> a, b, c;> >printf>(>'Enter value of a in decimal format:'>);> >scanf>(>'%d'>, &a);> >printf>(>'Enter value of b in octal format: '>);> >scanf>(>'%i'>, &b);> >printf>(>'Enter value of c in hexadecimal format: '>);> >scanf>(>'%i'>, &c);> >printf>(>'a = %i, b = %i, c = %i'>, a, b, c);> >return> 0;> }>

>

>

산출

Enter value of a in decimal format: 12 Enter value of b in octal format: 012 Enter value of c in hexadecimal format: 0x12 a = 12, b = 10, c = 18>

설명

  • 12인 a의 십진수 값은 12입니다.
  • 12(8진수)인 b의 10진수 값은 10입니다.
  • 12(16진수)인 c의 10진수 값은 18입니다.