为什么我得到这个输出(整数和双重模糊)?

时间:2017-04-13 16:52:46

标签: c

#include<stdio.h>
int main()
{
int i=4;
double d=4.0;

int ii;
double dd;

scanf("%d",&ii);
scanf("%lf",&dd);

printf("%d",i+ii);
printf("%lf",(d+dd));
return 0;

}

我为整数提供输入12,为double提供4.0。我输出只有168.00000,但有两个打印声明。我不知道为什么?

2 个答案:

答案 0 :(得分:2)

您所看到的结果完全可以预料到。您可能会错过这样一个事实,即您没有在printf语句中包含换行符。

按照你的逻辑,你拿12并添加4.0。结果是16,您打印。这就把我们带到了这里:

 16

接下来打印dd+d的浮点数。假设4.0,你现在打印出8.000。把它们放在一起(因为没有新行)你最终得到:

168.000

答案 1 :(得分:1)

此输出应视为

16 8.00000 

如果您在两个数字之间插入一个空格。

例如

printf("%d ",i+ii);
          ^^
printf("%lf",(d+dd));

或者您可以插入新的行字符

printf("%d\n",i+ii);
          ^^
printf("%lf\n",(d+dd));
           ^^

在这种情况下,你会得到

16
8.00000 

考虑到根据C标准函数main,没有参数应声明为

int main( void )
         ^^^^^^