Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
786 views
in Technique[技术] by (71.8m points)

c - problem with printf function?

i wrote the following program

 #include <stdio.h>

 main()
 {
 int i = 2;
 float c = 4.5;
 printf("%d
",c);
 printf("%f
",i);
 return 0;
 }

though i know this is the wrong practice,when i run the program i got the answer as

0
4.500000

but when i exchanged the printf statements a little bit this way

#include <stdio.h>

main()
{
int i = 2;
float c = 4.5;
printf("%f
",i);
printf("%d
",c);
return 0;
}

the output was

0.000000
0

i couldn't understand whats happening ,any one pls explain me.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

printf doesn't convert it's arguments. It's looking at the memory containing a float and printing it as if it were an integer - it's like taking an MP3 file and asking word to open it as if it were a doc.

A floating point number is stored in a completely different way in memory to an integer - it's not just an integer with some decimal points


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...