user2930701
user2930701

Reputation: 173

Printing out array element

So I have this code

double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};

printf("%d", balance[0]);

So I expect the first element of the array to print out, which would be 1000.0. However, it keeps on printing 0 for some odd reason. Anyone have an idea on why??

Upvotes: 0

Views: 139

Answers (6)

Kuldeep
Kuldeep

Reputation: 3

You have used the wrong format specifier in the printf statment in your code. You are trying to print a floating point value using the %d format specifier which results in unexpected output.

Use %f in place of %d and everything will be all right, like this :

double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
printf("%f", balance[0]);

Output :

1000.000000

Upvotes: 0

srinath
srinath

Reputation: 9

Use %f instead of %d.You can also replace double with float.

float balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};

printf("%f", balance[0])

  1. %d is used for integer.
  2. %f is used for float.

Upvotes: 0

Dayal rai
Dayal rai

Reputation: 6606

From C11 draft

§7.16.1.1/2

...if type is not compatible with the type of the actual next argument 
(as promoted according to the default argument promotions), the behavior 
is undefined, ....

You need to use correct format specifier to print the value of variable.

Upvotes: 4

user
user

Reputation: 130

to print the double value you can not use %d you should use %f for that.

double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};

printf("%f", balance[0]);

Upvotes: 1

Yu Hao
Yu Hao

Reputation: 122503

To print double, use %f:

printf("%f", balance[0]);

You may be confused that d in %d means double, but actually it means decimal.

Upvotes: 1

Shubham
Shubham

Reputation: 965

You are using the format specifier of a signed int to print a double.
Use this-

printf("%f", balance[0]);

Upvotes: 1

Related Questions