C语言代码在不同编译器下运行结果不同,请问原因?

#include <stdio.h>int main(){ float x, y; char ch; short flag = 1; do { scanf("%f", &x); if (x > -5 && x < 0)y = x; else if (x == 0) y = x - 1; else if (x > 0 && x < 10) y = x + 1; else y = 100; printf("y=%f\n", y); if (x == y) printf("x equals to y!\n"); printf("Do you want to continue(Y/N or y/n)?\n"); fflush(stdin); scanf("%c", &ch); if (ch == 'y' || ch == 'Y')flag = 1; else flag = 0; } while (flag == 1); return 0;}如图3图4,为什么这段代码在DEV-C++中可以正常运行,在VisualStudio2015中不能正常运行,第二个scanf未能执行?

可以把fflush(stdin); 删掉,有时候把这个删掉就行了。scanf("%c", &ch);换成ch=getchar();应该就行了。
至于两个编译器不一样的情况,这是肯定会有的,毕竟是两个不同的编译器。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-20
fflush(stdin)在VS2015之前的版本有效,从VS2015开始就没有效果了。
从VS2015开始,需要用rewind(stdin)。
相似回答