【发布时间】:2022-11-10 02:32:37
【问题描述】:
我一直在努力让我的函数中的 if 语句正确评估。我试图让 if 语句仅在变量等于“Y”或“y”时才评估为真。我不熟悉 char 变量,所以我怀疑我要么错误地将 char 存储到变量中,要么以始终正确的方式评估表达式。
我写的代码如下:
#include <stdio.h>
// fuctions
int Greeting(void);
// variables
int return_status;
int main(void)
{
return_status = Greeting();
printf("Return status is %d \n", return_status);
return 0;
}
int Greeting(void)
{
char status;
printf("Welcome to the program. Would you like to continue?(Y/N)\n");
scanf(" %c", &status);
if (status == 'Y' || 'y') // Problem is probably here
{
printf("You have said %c.\n", status);
return 0;
}
else
{
return 1;
}
}
【问题讨论】:
-
您的条件组合无法按您的预期工作。您需要
if(status == 'Y' || status == 'y')- 第二个条件仅评估'y'是否为true总是如此 -
那里必须成为这个的合适的规范副本......看起来......
-
首先正确缩进您的代码,例如像您的 C 教科书中的示例一样。
-
正确附加足够的警告级别并将其视为错误,您的编译器应该会告诉您哪里出了问题see here。
-
@AdrianMole 我同意。问题是这个错误通常只由非常初级的工程师/学生对 C 语言非常陌生。他们的工程青年渗透到他们的问题质量和白话选择中。老实说,这个问题的标题可能是我遇到这个问题时见过的更好的标题之一。它们通常是“我的代码不起作用”、“出了什么问题”等之类的,基本上没用。至少这个问题的标题暗示了问题的特殊性。
标签: c