Print integer in C
Written by
Printing integers in C:
Syntax for printing integers in C:
printf(“%d”, variableName);printf(“%i”, variableName);
We can use both %d and %i in the printf() function to print integers. Both give the same output.
The code snippet below shows how we can print integers using %d and %i :
#include <stdio.h>int main()
{
int num1 = 10;
int num2 = 5;
printf("num1: %d \n", num1);
printf("num2: %i \n", num2);
return 0;
}
The code snippet gives the following output:
num1: 10num2: 5
As we can observe from the output, printing integers using printf() function can be done using either %d or %i.
However, %d and %i behave differently while inputting integers using the scanf() function.
We will understand how they work differently using the below code snippet:
#include <stdio.h> int main(){
int num1, num2;
printf("Enter num1:");
scanf("%d", & amp; num1); // reading num1 using %d
printf("Enter num2:");
scanf("%i", & amp; num2); //reading num2 using %i
printf("num1: %d \n", num1);
printf("num2: %d \n", num2);
return 0;
}
The code snippet has the following input and output:
Enter num1: 010Enter num2: 010
num1: 10
num2: 8
- We have created two integer variable num1 and num2
- We input num1 using %d and num2 using %i
- When we enter 010 for num1 it ignores the first 0 and treats it as decimal 10 as we are using %d. Therefore, %d treats all numbers as decimal numbers.
- When we enter 010 for num2 it sees the leading 0 and parses it as octal 010 as we are using %i. %i does not treat all numbers as decimal numbers.
- However, since we are printing both num1 and num2 using %d, which means decimal, we get the output as 8 for 010 stored in num2 as 010 is the decimal equivalent of octal number 010.