...
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',这解决了问题...谢谢.
由于你试图读取一个integer(%d)scanf并将其存储在一个char变量中,所以存在一个内存溢出:a char是1个字节而a int是(通常)4个.结果是变量之后的内存区域M然后Q得到覆盖.这也恰好影响count了.
声明你的变量int以避免这种情况(或者char用scanf- 显式读取值- 但是如果你想要乘以值,最好立即从ints 开始,至少减轻整数溢出的风险).