全局变量值自动变化?

rsj*_*ani 1 c

...

char A,M,Q,Q_1,count;

int main()

{

    system("cls");
    count=8;
    printf("%d",count);
    printf("\n\tEnter the Multiplicand(M) : ");
    scanf("%d",&M);
    printf("\n\tEnter the Multiplier(Q) : ");
    scanf("%d",&Q);
        printf("%d",count);    //prints 0???????
.......

}
Run Code Online (Sandbox Code Playgroud)

我不明白'count'的值如何变为0.

请帮忙...谢谢.

系统:win7/VS2008

编辑:在了解我在做什么之后(感谢PéterTörök),我在scanfs之后将作业移到了'count',这解决了问题...谢谢.

Pét*_*rök 5

由于你试图读取一个integer(%d)scanf并将其存储在一个char变量中,所以存在一个内存溢出:a char是1个字节而a int是(通常)4个.结果是变量之后的内存区域M然后Q得到覆盖.这也恰好影响count了.

声明你的变量int以避免这种情况(或者charscanf- 显式读取值- 但是如果你想要乘以值,最好立即从ints 开始,至少减轻整数溢出的风险).