为什么输出的结果会参照以前的代码?

这是用c语言写的整数逆序的代码,用dev c++编译
#include <stdio.h>

int main()
{
int a;
int b =0 ;
int c =0 ;

scanf("%d", &a);
while(a < 0){
    c = a % 10;
    b = b * 10 + c;
    a = a / 10;
}
printf("%d", b);

return 0; 

}
我输入初始值 12345 后,得出来的结果如下

img

我的理解是printf("%d", b);这个代码它最后输出来的结果应该只有54321,但是为什么还有一些其他的数。
在此之前,我跟着teacher写了一个一模一样的代码,但是定义的变量不一样,变量就是图上的,那个文件名是整数逆序,我写的文件名是整数逆序1
为什么编译运行得出是参照以前的代码来的呢?

while(a<0)能输出?
你提供的代码和你的输出界面好像一毛钱关系也没有吧?

所有文件重新编译,就不会运行先前的代码结果出来!或者你把你所有的文件全部先保存一遍,再重新编译就好了

你那几行代码,运行如下

img

emmm,你是不是没有编译

img


点这个,不然点左边那个就是前一次编译

while(a>0){
}
a<0的话不会执行中间一段代码

修改如下,供参考:

#include <stdio.h>
int main()
{
    int a, i=0;
    int b = 0;
    int c = 0;
    scanf("%d", &a);
    while (a) {   //a < 0 修改
        printf("%d\n", c);  //增加输出 c
        c = a % 10;
        b = b * 10 + c;
        printf("a=%d, c=%d, b=%d\n", a, c, b); // 输出,看看变化
        a = a / 10;
    }
    printf("%d", b);
    return 0;
}