Я заметил странное поведение некоторых из моих программ на c ++, и когда я пытался выяснить, что его вызвало, я обнаружил, что что-то не так происходит с выходами моей консоли. Я использовал функции iostream и cstdio с одинаковым поведением. Когда я что-то печатаю на консоли, это вообще не отображается. Вот коды, которые я использовал для наблюдения за этим странным поведением.
Этот фрагмент кода выводит все правильно (даже если это не должно быть IMO):
#include <cstdio>
using namespace std;
int main(void) {
int a = 0;
scanf("%d", &a);
a++;
printf("result is %d", a);
}
Однако этот (правильный, я думаю) ничего не отображает, только сообщение о завершении работы
#include <cstdio>
using namespace std;
int main(void) {
int a = 0;
scanf("%d", &a);
a++;
printf("result is %d \n", a);
}
Я также попробовал это с удаленным пробелом перед «\ n» без разницы. Однако, когда я добавляю в программу больше одинаковых функций printf с символом \ n в конце, все отображается правильно (конечно, несколько раз). Iostream ведет себя аналогичным образом — использование endl не приводит к появлению чего-либо на консоли. Что я делаю неправильно? Что касается исходного кода, который вызвал сбои в работе, я заметил, что на моем выходе ничего не появилось, но в моей школе тот же код выводил все правильно. Я работаю под NetBeans 8.0.2. Заранее спасибо за помощь
Все выходные данные буферизуются до того, как они будут напечатаны на консоли. Ты можешь использовать fflush
или же \n
очистить поток вывода и распечатать все данные.