#include<stdio.h>
int main() {
int n, s, i;
do {
printf("n= "); // here is the problem ?
scanf("%d", &n);
} while (n<100 || n <= 0);
s = 0;
i = 0;
while (i <= n) {
i = i + 2;
s = s + i;
}
printf("s=%d", s);
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在 eclipse c/c++ 中运行它,它不首先打印“n=”。但是当我在另一个 IDE(例如 DEV-C++ 或 VS 2017)中运行它时,它运行良好。当在 printf 之后添加这一行时,我按照我的预期运行了。
fflush(stdout);
Run Code Online (Sandbox Code Playgroud)
这里有什么问题 ?
printf除非刷新缓冲区,否则不会打印到屏幕看起来您的流已被缓冲。一旦刷新缓冲区,您写入的数据stdout和其他流就会被缓冲并输出所有数据。这可以实现更好的性能,因为 IO 在所有 CPU 操作中是最慢的。
此时,您至少有以下选择:
fflush( stdout )每次使用时调用显式刷新缓冲区printfsetbuf(stdout, NULL);\n通过在字符串末尾使用换行符来刷新缓冲区printfEx:printf("n= \n");您的代码在某些环境中工作可能是因为那里禁用了缓冲。
| 归档时间: |
|
| 查看次数: |
13688 次 |
| 最近记录: |