我不能在if语句中使用char名称

时间:2019-02-27 23:22:52

标签: c codeblocks

#include<stdio.h>
#include<conio.h>
void main()
{
    char sexo;
    float alt,peso;
    printf("Qual o seu sexo? (M/F)");
    sexo=getch();
    printf("Insira a sua altura: ");
    scanf("&f", &alt);
    if (sexo=m||sexo=M||sexo=f||sexo=F)
    {
        if (sexo=m||sexo=M)
        peso=(72.7*alt)-58;
        else
        peso=(62.1*alt)-44.7;
        printf("O peso recomendado para o seu sexo e %.2fKg",peso);
    }
    else
        printf("Sexo invalido");
}

一旦我尝试编译它,我就会在第11行收到错误消息:

error: 'm' undeclared (first use in this function)
error: 'M' undeclared (first use in this function)
error: 'f' undeclared (first use in this function)
error: 'F' undeclared (first use in this function)

||=== Build failed: 4 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===||

有人知道发生了什么事吗?

3 个答案:

答案 0 :(得分:2)

您使用m&M&f&F的方式就像它们是可变的而不是字符 这就是你想要做的

2-比较运算符= =不=唯一(这是赋值运算符)

if (sexo=='m'||sexo=='M'||sexo=='f'||sexo=='F')

答案 1 :(得分:1)

替换此行

if (sexo=m||sexo=M||sexo=f||sexo=F)

作者

if (sexo=='m'||sexo=='M'||sexo=='f'||sexo=='F')

字符常量用单引号引起来。

答案 2 :(得分:0)

首先,如果要比较两个值而不是==,则必须使用=。单个等号(=)用于初始化变量中的值。

其次,如果您想将值与字符进行比较,则必须在其前后加上单引号,例如sexo == 'A'。不带引号进行比较,例如sexo == A表示您将其与变量A的而不是A的进行比较。因此,您需要通过以下方式更改代码:

更改:

if (sexo=m||sexo=M||sexo=f||sexo=F)

收件人:

if (sexo=='m'||sexo=='M'||sexo=='f'||sexo=='F')

然后更改:

if (sexo=m||sexo=M)

收件人:

if (sexo=='m'||sexo=='M')