2016-05-16 5 views
4

Я настоящий новичок в C, но я хочу многому научиться, и я написал эту очень простую программу, в которой пользователю предлагается ввести номер с клавиатуры. Перед этим должно отображаться сообщение «Пожалуйста, введите реальное число с помощью клавиатуры», а после - сообщение, подтверждающее пользователю значение числа, которое они набрали. (код ниже)C инструкции не выполняются в порядке

Проблема заключается в том, когда я строю свой исполняемый файл, а затем запустить его, он сначала запрашивает значение х, и отображает сообщение «Пожалуйста, введите вещественное число с клавиатуры» только после пользователь набрал номер! Что я сделал не так? Может ли кто-нибудь объяснить мне это странное поведение, так как я набрал свои инструкции в хорошем порядке?

#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), либо вы можете изменить способ просмотра вывода. Это может означать запуск вашей программы в командной строке.

Смежные вопросы