2016-05-16 113 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

我們需要知道您正在運行的平臺是什麼:您正在編譯的操作系統和確切的編譯器版本是什麼? –

+0

它可能有助於解釋您正在編譯的標誌。 FWIW,我沒有看到你提供的代碼有問題。而C編譯器通常不會重新排序函數調用,所以有些東西聞起來很腥。 – jszakmeister

回答

4

很可能是程序顯示你的輸出以及它如何緩衝行。大多數輸出​​將緩衝和顯示每行(這是你的輸出將被保存,直到看到一個\n字符)。要解決此問題,您可以強制命令使用fflush(stdout)來刷新,也可以更改查看輸出的方式。這可能意味着在命令行上運行你的程序。