即使 case 为 True,switch 语句也不会初始化值?
The switch statement is not initializing the value even if the case is True?
我希望此 switch 语句将正确的值初始化为变量选项,但它没有初始化,因此不允许 if 语句工作。
#define arti 2.05
int main(void)
{
char ch;
float option = 0;
while(ch = getchar())
{
ch = toupper(ch);
switch(ch)
{
case 'A':
option = arti; //value of arti is 2.05
break;
case 'B':
option = beets;
break;
default:
printf("Enter a valid value.\n");
continue;
break;
}
if(option == arti)
{
printf("arti printed successfully!\n");
}
}
return 0;
}
我得到的输出是这样的:
a //input
Enter a valid value. //output
我不知道问题出在哪里我已将此代码尽可能短以向您解释问题。请帮我解决这个问题。
您正在将 float
值 (option
) 与 double
常量 (arti
) 进行比较,这导致了问题。要将 arti
定义为(单精度)float
,请添加 f
后缀:
#define arti 2.05f
我希望此 switch 语句将正确的值初始化为变量选项,但它没有初始化,因此不允许 if 语句工作。
#define arti 2.05
int main(void)
{
char ch;
float option = 0;
while(ch = getchar())
{
ch = toupper(ch);
switch(ch)
{
case 'A':
option = arti; //value of arti is 2.05
break;
case 'B':
option = beets;
break;
default:
printf("Enter a valid value.\n");
continue;
break;
}
if(option == arti)
{
printf("arti printed successfully!\n");
}
}
return 0;
}
我得到的输出是这样的:
a //input
Enter a valid value. //output
我不知道问题出在哪里我已将此代码尽可能短以向您解释问题。请帮我解决这个问题。
您正在将 float
值 (option
) 与 double
常量 (arti
) 进行比较,这导致了问题。要将 arti
定义为(单精度)float
,请添加 f
后缀:
#define arti 2.05f