2016-05-16 12 views
4

私はCの本物の初心者ですが、私はたくさんのことを学びたいと思っています。この非常に簡単なプログラムを書いています。その前に、「キーボードで実数を入力してください」というメッセージが表示され、その後、入力された数字の値をユーザに確認するメッセージが表示されます。 (以下コード)C命令が順番に実行されていない

問題がある、私は私の実行可能ファイルを構築し、それを実行すると、それは最初のxの値を要求し、そしてメッセージを表示し、「キーボードと実数を入力してください」だけユーザーが数字を入力しました!私は何を間違えたのですか? 誰かがこの奇妙な行動を私に説明することができましたか?

#include <stdio.h> /* package to read and to write variables */ 

int main(void) /* main program */ 
{ 
    float x; /* declaring a real number x*/ 

    printf("Please type a real number with the keyboard\n"); 
    scanf("%f", &x); /* prompting x with the keyboard */ 
    /* displaying x : */ 
    printf("You just typed %f, congratulations !", x); 
    return 0; 
} 
+0

このプログラムをどのように実行しますか? –

+3

これを実行しているプラ​​ットフォームを知る必要があります:OSとコンパイルするコンパイラのバージョンは何ですか? –

+0

コンパイルするフラグを説明するのに役立つかもしれません。 FWIW、あなたが与えたコードには何の問題もありません。そして、Cコンパイラは一般的に関数呼び出しの順序を変更しないので、何かがかなり怪しげなにおいをします。 – jszakmeister

答えて

4

あなたの出力を表示しているプログラムとそれがどのように行をバッファリングしているのかは不思議です。ほとんどの出力はバッファーに入れられ、1行に表示されます(つまり、出力は\nの文字が表示されるまで保存されます)。これを修正するには、コマンドを強制的にfflush(stdout)にするか、出力の表示方法を変更することができます。これは、プログラムをコマンドラインで実行することを意味します。

関連する問題