
C/C++
心亦
成长中的菜鸟
展开
-
由while(scanf("%d",&n)!=EOF)引出的小问题
说实话,以前没见过这种写法,没注意scanf还有返回值,EOF也没怎么见过。百度了一番,知道EOF是-1(即#define EOF (-1));scanf返回的是成功扫描进的数的个数。如scanf("%d %d",&a, &b),若a、b都输入成功返回2,成功一个返回1,都不成功返回0,错误返回-1。标题那段代码的意思是,输入Ctrl+z终止循环(这是在Windows下,在Unix环境下是Ctrl原创 2013-01-30 11:31:56 · 6732 阅读 · 3 评论 -
printf()的格式
问:有人告诉我不能在printf中使用%lf。为什么printf()用%f输出double型,而scanf却用%lf呢?答:printf的%f说明符的确既可以输出float型又可以输出double型。根据“默认参数提升”规则(在printf这样的函数的可变参数列表中,不论作用域内有没有原型,都适用这一规则)float型会被提升为double型。因此printf()只会看到双精度数。参见问题转载 2013-03-09 21:51:25 · 881 阅读 · 0 评论