0

首先,我的程序可以运行,但是b3表达式 (a boolean) 并没有像我想要的那样运行。当我选择一列火车是 DIESEL 或 ELECTRICAL 时,它给我的值不是 0 (false),而是当一些火车是 DIESEL 或 ELECTRICAL 时给我的值 1 (TRUE)。只有当两列火车都是电动的或都是柴油的时,它才会给出错误的结果。当一列火车是电动的而另一列是柴油时,它让我一直给我 1(真)。我的代码更广泛,但这些是与我所考虑的问题相关的部分。

typedef enum{ELECTRICAL, CARBON, SOLAR, GASOLINE, DIESEL, MAGNETIC} tPropulsion;    
typedef enum{FALSE, TRUE} boolean;    
int main()
{
    tPropulsion propulsionType1, propulsionType2;
    boolean b2, b3, b4;

    printf("Insert type of propulsion of train1>> 0-ELECTRICAL, 1-CARBON, 2-SOLAR, 3 GASOLINE, 4-DIESEL, 5-MAGNETIC ");
    scanf("%u", &propulsionType1);

    printf("Insert type of propulsion of train2>> 0-ELECTRICAL, 1-CARBON, 2-SOLAR, 3 GASOLINE, 4-DIESEL, 5-MAGNETIC ");
    scanf("%u", &propulsionType2);

    b3 = propulsionType1 != DIESEL && propulsionType2 != ELECTRICAL && 
    propulsionType1 != DIESEL && propulsionType2 != ELECTRICAL;


    printf("Neither train 1 or train 2 are DIESEL or ELECTRICAL is (0-FLASE, 1-TRUE)>> %u", b3);
}
4

1 回答 1

0

首先:

  • 缩进你的代码
  • 使用括号
  • 而不是使用枚举作为布尔值,你可以像这样做你自己的布尔值:
#define TRUE (0==0)
#define FALSE !TRUE

然后澄清你的陈述,你想要什么?

“如果火车 1 或火车 2 是 DIESEL 或 ELECTRICAL 则为 TRUE,否则为 FALSE”

    b3 = ((propulsionType1 == DIESEL) || (propulsionType2 == ELECTRICAL)) ||
    ((propulsionType1 == DIESEL) || (propulsionType2 == ELECTRICAL));

然后看propulsionType1和propulsionType2

    b3 = ((propulsionType1 == DIESEL) || (propulsionType1 == ELECTRICAL)) ||
    ((propulsionType2 == DIESEL) || (propulsionType2 == ELECTRICAL));
于 2019-04-08T15:46:40.823 回答