C:合并while和if语句

时间:2018-11-04 22:38:59

标签: c function if-statement while-loop

我试图根据用户提供的输入,用C语言编写一个程序,该程序调用两个函数之一。

如果用户输入“ 1”,程序应该说“您选择了A”,如果用户输入了“ 2”,则应该说“您选择了B”。我遇到的问题是,无论用户输入1还是2,都会返回消息“您选择了A”(请参见屏幕截图)。

Selection 1

Selection 2

这是我的代码:

include <stdio.h>

void celsiusFahrenheit()
{
    printf("You chose A");
}

void fahrenheitCelsius()
{
    printf("You chose B");
}

int main()
{
    int selection;
    printf("Please enter '1' to convert celsius to fahrenheit, or enter '2' to convert fahrenheit to celsius: ");
    scanf_s("%d", &selection);
    while (selection < 1 || selection > 2)
    {
        printf("Please enter a valid entry of either 1 or 2: ");
        scanf_s("%d", &selection);
    }
    if (selection = 1)
    {
        celsiusFahrenheit();
    }
    else
    {
        fahrenheitCelsius();
    }
}

感谢您能提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

您正在将整数常量分配给整数(selection = 1)并检查其真值,总是为真。 正如评论中已经指出的那样,您可以使用-Wall选项来警告您,

warning: suggest parentheses around assignment used as truth value [-Wparentheses]

 if (selection = 1)

     ~~~~~~~~~~^~~

或像这样更改if条件:

 if (1 == selection)

如果您在上面的语句中犯了相同的错误(赋值),即使没有-Wall选项,编译器也会产生错误,并且可以避免程序中的此错误。