# What is the difference between %d and %i

## What are %d and %i

Format specifiers are used in C programming for letting the compiler understand , the nature of the data that the programmer is working upon. %d and %i are two such format specifiers which are used for working with integer data type. Although both of them can be used for printing an integer value, but there is a slight difference between them, when they are used for accepting a value through scanf.

## Difference in the use of %d and %i

Both %d and %i are used when we are working with integer data type, they both behave similarly while printing a integer value, but when they are used with scanf, for accepting a integer value, there is a slight difference in their property

• While accepting a integer value %d simple takes the base of the value as 10(decimal).
• But, if we use %i while accepting the integer value, it takes the base(decimal, octal, hexadecimal) of the value, depending upon the value entered.
• For Example,
• If we enter 21, it will return 21 as decimal
• If we enter 021, it will take it as octal and will return 17
• And, if we enter 0x21, it will take it as hexa-decimal and will return 33

### Use of %d

Run
```#include <stdio.h>
int main()
{
int a, b, c;

printf("Enter a value in decimal format:");
scanf("%d", &b);

printf("Enter Enter a value in octal format: ");
scanf("%d", &b);

printf("Enter Enter a value in hexadecimal format: ");
scanf("%d", &c);

printf("Enter a = %d, b = %d, c = %d", a, b, c);

return 0;
}```

### Output

```Enter a value in decimal format:1792
Enter Enter a value in octal format: 01792
Enter Enter a value in hexadecimal format: 0x1792
Enter a = 32767, b = 1792, c = 0```

### Use of %i

Run
```#include <stdio.h>

int main()
{
int a, b, c;

printf("Enter a value in decimal format:");
scanf("%i", &b);

printf("Enter a value in octal format: ");
scanf("%i", &b);

printf("Enter a value in hexadecimal format: ");
scanf("%i", &c);

printf("a = %i, b = %i, c = %i", a, b, c);

return 0;
}```

### Output

```Enter a value in decimal format:21
Enter a value in octal format: 021
Enter a value in hexadecimal format: 0x21
a = 32764, b = 17, c = 33 ```

### Related Banners

Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription

## Get over 200+ course One Subscription

Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others