Expression evaluates to: 0
The expression 45.0
is of type double
.
The printf
format code %d
is for integer.
printf("Expression evaluates to: %d\n", 45.0 );
The 64 bits† that encode the 45.0
are not interpretted correctly at run time and produce character '0'
on my computer.
(Your computer may produce a different incorrect result.)
Notice that the "point zero" in 45.0
makes the expression a double.
Sometimes people think that it is an integer because there is no fractional part,
but it is the data type and not the value that matters.
† Recall that ANSI C does not specify the number of bits for each data type. Doubles are usually 64 bits, but this depends on your system.