即使 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