gpt4 book ai didi

C编程,为什么我的代码有溢出?

转载 作者:行者123 更新时间:2023-11-30 14:32:50 30 4
gpt4 key购买 nike

这是我的代码

int main()
{
int n,m;
scanf_s("%d 시 %d 분에 알람을 맞춥니다. ",&n,&m);

if(m<45)
{

m +=15;
n--;
if(n<0) n+=24;

printf("%d 시 %d 분에 실제로 알람이 울리게 됩니다.",n,m);

}

}

这是答案

int main()
{
int a, b;
scanf_s("%d %d", &a, &b);
if (b < 45)
{
b += 60;
a--;
if (a < 0) a = 23;
}
printf("%d %d", a, b - 45);
}

上面的代码是一个系统,如果您设置了闹钟,它可以让您提前 45 分钟响铃。

如果我用我的代码编译它并输入 0:35,则正确答案是 23: -858993445。

下面的答案是23:50的正常输出

我觉得我的答案已经溢出了,我不知道为什么会是这样的结果。

我想让你告诉我原因。

最佳答案

您的 scanf_s() 格式字符串要求您准确输入字符串中嵌入的数字。我确信您没有输入此内容。

所以scanf_s()只是扫描了以“%d”开头的第一个数字并将其存储在n中,但它不能将一个值读入m。因此,后一个变量保留了您在输出中看到的初始值和随机值。

解决问题的一些步骤:

  • 使用printf()输出提示。 scanf_s() 无法执行此操作。
  • 简化 scanf_s() 的格式字符串。
  • 检查 scanf_s() 的返回值是否成功。

关于C编程,为什么我的代码有溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59658686/

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