How to print an integer in C++

How to print an integer in C++

How to print an integer in C language? A user inputs an integer, and we print it. Input is done using scanf function, and the number is printed on screen using printf.

C program to print an int (integer)

#include <stdio.h>

 int main()
{
  int a;

   printf("Enter an integer\n");
  scanf("%d", &a);

   printf("The integer is: %d\n", a);

   return 0;
}

Output of the program:

How to print an integer in C++

C program to print first hundred positive integers [1, 100] using a for loop:

#include <stdio.h>

int main()
{
  int c;

  for (c = 1; c <= 100; c++)
    printf("%d ", c);

  return 0;
}

In C language, we have data types for different types of data, for integers, it's int, for characters it's char, for floating-point data, it's float, and so on. For large integers, you can use long or long long data type. To store integers that are greater than (2^18-1), which is the range of long long data type, you may use strings. In the below program, we store an integer in a string and display it.

C program to store an integer in a string

#include <stdio.h>

int main ()
{
   char n[1000];

      printf("Input an integer\n");
   scanf("%s", n);

      printf("%s", n);

   return 0;
}

Output of program:

Input an integer
12345678909876543210123456789
12345678909876543210123456789

An advantage of using a string is that we can store huge integers, but we can't perform arithmetic operations directly; for this, you can create functions. C programming language does not have a built-in data type for such numbers.

I am just learning C and I have a little knowledge of Objective-C due to dabbling in iOS development, however, in Objective-C I was using NSLog(@"%i", x); to print the variable x to the console however I have been reading a few C tutorials and they are saying to use %d instead of %i.

printf("%d", x); and printf("%i", x); both print x to the console correctly.

These both seem to get me to the same place so I am asking the experienced developers which is preferred? Is one more semantically correct or is right?

How to print an integer in C++

Acorn

24.3k5 gold badges37 silver badges67 bronze badges

asked Jun 26, 2013 at 20:16

They are completely equivalent when used with printf(). Personally, I prefer %d, it's used more often (should I say "it's the idiomatic conversion specifier for int"?).

(One difference between %i and %d is that when used with scanf(), then %d always expects a decimal integer, whereas %i recognizes the 0 and 0x prefixes as octal and hexadecimal, but no sane programmer uses scanf() anyway so this should not be a concern.)

answered Jun 26, 2013 at 20:17

5

I am just adding example here because I think examples make it easier to understand.

In printf() they behave identically so you can use any either %d or %i. But they behave differently in scanf().

For example:

int main()
{
    int num,num2;
    scanf("%d%i",&num,&num2);// reading num using %d and num2 using %i

    printf("%d\t%d",num,num2);
    return 0;
}

Output:

How to print an integer in C++

You can see the different results for identical inputs.

num:

We are reading num using %d so when we enter 010 it ignores the first 0 and treats it as decimal 10.

num2:

We are reading num2 using %i.

That means it will treat decimals, octals, and hexadecimals differently.

When it give num2 010 it sees the leading 0 and parses it as octal.

When we print it using %d it prints the decimal equivalent of octal 010 which is 8.

How to print an integer in C++

jwpfox

5,05411 gold badges45 silver badges42 bronze badges

answered Jul 4, 2014 at 13:05

How to print an integer in C++

A.s. BhullarA.s. Bhullar

2,6202 gold badges25 silver badges32 bronze badges

1

d and i conversion specifiers behave the same with fprintf but behave differently for fscanf.

As some other wrote in their answer, the idiomatic way to print an int is using d conversion specifier.

Regarding i specifier and fprintf, C99 Rationale says that:

The %i conversion specifier was added in C89 for programmer convenience to provide symmetry with fscanf’s %i conversion specifier, even though it has exactly the same meaning as the %d conversion specifier when used with fprintf.

answered Jun 26, 2013 at 20:27

ouahouah

141k15 gold badges267 silver badges327 bronze badges

both %d and %i can be used to print an integer

%d stands for "decimal", and %i for "integer." You can use %x to print in hexadecimal, and %o to print in octal.

You can use %i as a synonym for %d, if you prefer to indicate "integer" instead of "decimal."

On input, using scanf(), you can use use both %i and %d as well. %i means parse it as an integer in any base (octal, hexadecimal, or decimal, as indicated by a 0 or 0x prefix), while %d means parse it as a decimal integer.

check here for more explanation

why does %d stand for Integer?

answered Jun 26, 2013 at 20:24

How to print an integer in C++

Priyatham51Priyatham51

1,8541 gold badge16 silver badges24 bronze badges

%d seems to be the norm for printing integers, I never figured out why, they behave identically.

answered Jun 26, 2013 at 20:17

How to print an integer in C++

StephanStephan

15.3k7 gold badges34 silver badges61 bronze badges

As others said, they produce identical output on printf, but behave differently on scanf. I would prefer %d over %i for this reason. A number that is printed with %d can be read in with %d and you will get the same number. That is not always true with %i, if you ever choose to use zero padding. Because it is common to copy printf format strings into scanf format strings, I would avoid %i, since it could give you a surprising bug introduction:

I write fprintf("%i ...", ...);

You copy and write fscanf(%i ...", ...);

I decide I want to align columns more nicely and make alphabetization behave the same as sorting: fprintf("%03i ...", ...); (or %04d)

Now when you read my numbers, anything between 10 and 99 is interpreted in octal. Oops.

If you want decimal formatting, just say so.

answered May 9, 2015 at 12:55

How to print an integer in C++

David RoundyDavid Roundy

1,6462 gold badges13 silver badges20 bronze badges

Is %d an integer in C?

%d takes integer value as signed decimal integer i.e. it takes negative values along with positive values but values should be in decimal otherwise it will print garbage value.

What does %d and %f means in C?

%d and %f are format specifiers. %d is used for integer(-3,-100,3,100,etc). And %f is used for float(10.6,-39.0,etc).

How to print numbers from 1 to 10 in C?

C Programming Examples Tutorial Index Example: #include<stdio. h> void main() { int i; //Variable definition printf("The first 10 natural numbers are:\n "); for (i = 1; i <= 10; i++) //Iteration 10 times { printf("%d \t", i); //Print the number. } }

How to print a variable in C?

You can print all of the normal C types with printf by using different placeholders: int (integer values) uses %d. float (floating point values) uses %f. char (single character values) uses %c.