Hello, readers welcome to new post. Today we will discuss Difference between %d and %i format specifiers in C language. In C language of programming %d and %i are called format specifiers. %d was used to specify the variable type as decimal and %i used for integer specification.
Note: %d is used to specify signed decimal integers and %i specifies integer
Simply, there is no difference for print() function output but printing in numbers through the use of %d or %i but for the use of scanf function differences exist. scanf() can detect base through %i but suppose base ten for %d. In this tutorial, we will learn some points that will help us to find the basic difference between %d and %i. So let’s get started
What is Format specifiers in C
- The format specifier are used in C programming language to define the input and outputs. Formate specifiers help the compiler to know the type of data in a variable when get input through use of scanf() function and printing using print() function
- Commonly used Format specifiers are listed here
Format Specifier
|
Type |
%c | Character |
%d |
it is an integer sign
|
%e or %E |
it used as a scientific notation for float
|
%f |
It used for Float values
|
%g or %G |
It is like the %e or %E
|
%hi |
Signed integer (short)
|
%hu |
Unsigned Integer (short)
|
%i |
Unsigned integer
|
%l or %ld or %li | Long |
%lf | Double |
%Lf | Long double |
%lu |
Unsigned int or unsigned long
|
%lli or %lld | Long long |
%llu |
Unsigned long long
|
%o |
Octal representation
|
%p | Pointer |
%s | String |
%u | Unsigned int |
%x or %X |
Hexadecimal representation
|
%n | Prints nothing |
%% |
Prints % character
|
%d vs %i format specifier in C language
- We will get the difference according to printf and scanf. First for printf
- For printf, there is no difference between %i and %d format specifier. Let’s solve an example
#include <stdio.h>
int main()
{
int num = 15;
// print value for %d
printf(“num ans for %%d is = %d\n”, num);
// print value using %i
printf(“num ans for %%i is = %i\n”, num);
return 0;
}
Output:
num ans for %d is = 15
num ans for %i is = 15
Now find the difference on the basis of scanf
- In the case of scanf function %d suppose the base as 10 but %i detects the base. So these two specifiers work in different fashions during input specifier configuration. So in simple form 015 will be 10 for %d and 15 for %i
- Solve example
include <stdio.h> int main() { int a=0; int b=0; printf("Put value a: "); scanf("%d",&x); printf("Put value b: "); scanf("%i",&b); printf("a=%d, b=%d\n",a,b); return 0; } put value of a:20 put vaue of a:0x30 a=20, b=30
That is all about the Difference between %d and %i format specifiers in C language all details has explained.If you have any questions ask them here.
Read also