C语言 switch 语句不初始化值,即使大小写为 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

最新更新