我正在使用Eclipse来编写C/C++代码,而我正在努力解决可能非常简单的问题.在我下面的代码中,我使用printf()和之后scanf().Althougth printf是在scanf()输出不同之前编写的.我能在这里找到类似问题的东西.但我无法解决它.有任何想法吗?
码:
#include <stdio.h>
int main()
{
int myvariable;
printf("Enter a number:");
scanf("%d", &myvariable);
printf("%d", myvariable);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
预期产量:
Enter a number:1
1
Run Code Online (Sandbox Code Playgroud)
相反,我得到:
1
Enter a number:1
Run Code Online (Sandbox Code Playgroud) #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)
这里有什么问题 ?
我的代码如下:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("hello");
while(1){
// whatever here
}
}
Run Code Online (Sandbox Code Playgroud)
问题是:为什么跳过第一条指令?它只运行循环,你永远不会打印.我使用gcc和g ++编译它,结果相同.