2017-04-13 19 views
0
#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とダブルの4.0を提供しています。私は168.00000として出力を得ていますが、2つの印刷ステートメントがあります。どうしてか分かりません?なぜこの出力(整数と倍精度)が得られますか?

+2

'printf("%d "、i + ii);' - > 'printf("%d \ n "、i +2); ' – BLUEPIXY

+3

' 12 + 4 = 16'と '4.0 + 4.0 = 8.0'なので' 168.0' – NathanOliver

答えて

1

は、この出力は次の2つの数字の間に空白を挿入することを提供

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は、

012と宣言しなければならない
int main(void) 
     ^^^^^^ 
2

あなたが見ている結果は完全に予想されます。あなたはprintfステートメントに改行を含めていないという事実を見逃している可能性があります。

論理に従えば、12を取って4.0を追加します。結果は16で、これを印刷します。それはここに私たちをもたらします:

16 

あなたは次のdd+dの浮動小数点を印刷します。 4.0と仮定すると、8.000が出力されるようになりました。 (改行がなかったので)これらをまとめると、次のようになります。

168.000 
関連する問題