//我的疑问是为什么当a没有在代码里赋值时,输出的a值除了文件里的int型数据还有编译器自己设置的-858993460

问题1
为什么当a没有在代码里赋值时,输出的a值除了文件里的int型数据还有编译器自己设置的-858993460

问题2
当a赋值10时,输出的为什么是文件里的int型数据还有10--(即110),这里面我的文件string.dat里有一行字符canda1,而不是文件里的int型数据1

源代码

#include
#include

int main()
{
    FILE *fp;
    char str[10];
    int a=10;
    if((fp=fopen("D:\\vc6\\string.dat","r"))==NULL)
    {
        printf("NO");
        exit(0);
    }
    fscanf(fp,"%s%d",str,&a);//我的疑问是为什么当a没有在代码里赋值时,输出的a值除了文件里的int型数据还有编译器自己设置的-858993460
    printf("%s%d\n",str,a);    //
    fclose(fp);
    return 0;
}

结果
canda110