我试图根据用户提供的输入,用C语言编写一个程序,该程序调用两个函数之一。
如果用户输入“ 1”,程序应该说“您选择了A”,如果用户输入了“ 2”,则应该说“您选择了B”。我遇到的问题是,无论用户输入1还是2,都会返回消息“您选择了A”(请参见屏幕截图)。
这是我的代码:
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();
}
}
感谢您能提供的任何帮助!
答案 0 :(得分:0)
您正在将整数常量分配给整数(selection = 1
)并检查其真值,总是为真。
正如评论中已经指出的那样,您可以使用-Wall
选项来警告您,
warning: suggest parentheses around assignment used as truth value [-Wparentheses]
if (selection = 1)
~~~~~~~~~~^~~
或像这样更改if
条件:
if (1 == selection)
如果您在上面的语句中犯了相同的错误(赋值),即使没有-Wall
选项,编译器也会产生错误,并且可以避免程序中的此错误。