gpt4 book ai didi

c - 全局变量值自动改变?

转载 作者:太空宇宙 更新时间:2023-11-04 00:33:18 24 4
gpt4 key购买 nike

...

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???????
.......

}

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

求助...谢谢。

系统:win7/VS2008

编辑:在深入了解我在做什么之后(感谢 Péter Török),我在 scanfs 之后将作业移至“计数”,这解决了问题......谢谢。

最佳答案

由于您尝试使用 scanf 读取整数 (%d) 并将其存储在 char 变量中,因此存在内存溢出: 一个char是1个字节而一个int是(通常)4个。结果是变量M之后的内存区域,然后Q,被覆盖。而这恰好也会影响 count

将您的变量声明为 int 以避免这种情况(或使用 scanf 显式读取 char 值 - 但如果您想乘以值,它最好立即从 int 开始,以至少减轻整数溢出的风险)。

关于c - 全局变量值自动改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4163800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com