gpt4 book ai didi

c - 当我在 int 中输入任何字符时,它会使其等于 8

转载 作者:行者123 更新时间:2023-11-30 15:43:02 25 4
gpt4 key购买 nike

我在代码的一部分中遇到了问题,其中我有 switch(num) ,并且有数字从 6 到 14 和 default 的情况。每当输入不是整数时,switch 语句会将其读取为 8,而不是默认值,当我删除 8 时,它会返回默认值!

有什么想法为什么会发生这种情况吗?

提前谢谢

我的问题示例

scanf("%d",&num);
switch(num)
{ case 6 : loop6 ; break;
case 7 : loop7 ; break;
case 8 : loop8 ; break ;
default : printf("unknow value "); break ; }

输入:不是整数输出:进入loop8并且不打印未知值。

最佳答案

我怀疑你的变量num已经有一个值了。

当您输入非数字值时,scanf 失败并且不会更新num。因此,它仍然是以前的样子;在你的例子中,显然是 8。

如果我是对的,以下内容应该可以为您解决问题:

int num = -1;
if(scanf("%d",&num)==1) {
switch(num)
{
case 6 :
loop6() ;
break;
case 7 :
loop7() ;
break;
case 8 :
loop8() ;
break ;
default :
printf("unknown value: %d \n", num);
break;
}
}

注意 - scanf 返回成功转换的参数数量;测试返回值对于输入错误具有鲁棒性。如果输入转换失败,则执行 switch 语句就没有意义。在 scanf 之前为 num 分配(无效)值是确保不会发生此问题的另一种方法。

关于c - 当我在 int 中输入任何字符时,它会使其等于 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19962757/

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