Switch:在Switch外部声明变量并在其中使用
以下不是问题所在,只是导致问题的部分:Switch:在Switch外部声明变量并在其中使用,c,variables,integer,switch-statement,C,Variables,Integer,Switch Statement,以下不是问题所在,只是导致问题的部分: int s,p; scanf("%d",s); switch(s) { case 1: { p=10; break; } case 2: { p=15; break; } } printf("%d",p); 问题是p打印的是一个随机且非常大的数字,是什么导致了它 所以我使用了你的一些建议,我知道我有以下代码: int s,p=0; scanf("%d",&s)
int s,p;
scanf("%d",s);
switch(s)
{
case 1:
{
p=10;
break;
}
case 2:
{
p=15;
break;
}
}
printf("%d",p);
问题是p打印的是一个随机且非常大的数字,是什么导致了它
所以我使用了你的一些建议,我知道我有以下代码:
int s,p=0;
scanf("%d",&s);
switch(s)
{
case 1:
{
p=10;
break;
}
case 2:
{
p=15;
break;
}
default:
{
printf("Number invalid");
return 0;
}
}
printf("%d",p);
现在我知道它总是默认的,即使我只输入1或2
好了,现在成功了,谢谢大家 您要扫描的号码是多少?您可能没有该数字的开关大小写,这意味着p未初始化(因此是随机的)。例如,如果输入3,则3没有case语句,p将包含一个随机值。我建议您在默认情况下检测无效输入,将值0指定给p
default:
p = 0;
更正代码:
int s,p;
scanf("%d", &s);
switch(s)
{
case 1:
{
p=10;
break;
}
case 2:
{
p=15;
break;
}
default:
{
p=0;
break;
}
}
printf("%d",p);
编辑:根据Paul R修复了扫描问题您扫描的号码是多少?您可能没有该数字的开关大小写,这意味着p未初始化(因此是随机的)。例如,如果输入3,则3没有case语句,p将包含一个随机值。我建议您在默认情况下检测无效输入,将值0指定给p
default:
p = 0;
更正代码:
int s,p;
scanf("%d", &s);
switch(s)
{
case 1:
{
p=10;
break;
}
case 2:
{
p=15;
break;
}
default:
{
p=0;
break;
}
}
printf("%d",p);
编辑:根据Paul R修复了扫描问题“int p”声明将p指定给任意值:内存中发生的任何值。现在,如果s不等于1或2,这个值永远不会改变,这就是你看到的。你能做的就是
- 将default:子句添加到switch()中,并将p指定给其中有意义的内容
- 将p声明为“int p=0
- 将default:子句添加到switch()中,并将p指定给其中有意义的内容
- 将p声明为“int p=0
- 您有两个问题:(i)
p
未初始化,(ii)您正在将s
传递给scanf,其中需要s
的地址
更改:
int s,p;
scanf("%d",s);
致:
您有两个问题:(i)p
未初始化,(ii)您正在将s
传递给scanf,其中需要s
的地址
更改:
int s,p;
scanf("%d",s);
致:
您可以使用默认值,然后尝试找出在中扫描的内容。您可以使用默认值,然后尝试找出在中扫描的内容。有人应该将C标记添加到此中。有人应该将C标记添加到此中。