%lf和%f之间的那些事儿

今天做poj2256的时候,用printf写%lf交是WA,看了讨论说改成%f,竟然真AC了。

一查,才发现这里还有些玄机。

似乎严格上,printf里并没有对于%lf的定义,虽然很多编译器会接受。

使用%f,无论是float型,还是double型,效果都是一样。

对于printf,因为有一个“默认参数提升”规则,float型会被提升为double型。因此printf只会看到双精度数。

对于scanf,由于接受的是指针(不太明白),并没有类型提升的说法。于是,double应该用%lf,float用%f。

posted @ 2011-08-23 17:22  alex4814  阅读(2350)  评论(0编辑  收藏  举报