即使大小写为true,switch语句也不会初始化该值?

问题描述 投票:0回答:1

我希望此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

我不知道问题出在哪里,我已使这段代码尽可能简短地向您解释了问题。请帮助我。

c if-statement initialization switch-statement c11
1个回答
0
投票

您正在将float值(option)与double常数(arti)进行比较,这会引起问题。要将arti定义为(单精度)float,请添加f后缀:

#define arti 2.05f
© www.soinside.com 2019 - 2024. All rights reserved.