【问题标题】:If condition doesn't output properly yet it compiles in C如果条件没有正确输出但它在 C 中编译
【发布时间】:2020-06-28 16:37:11
【问题描述】:

所以它编译正常,但输出不是预期的。我认为问题在于 OR 运算符无法正常工作,或者它与 && 运算符冲突。但也许它写得不好或什么的。请告诉我。提前致谢。

代码如下:

if((len == 16) && secDigit == (51 | 52 | 53 | 54 | 55)
{
    printf("MASTERCARD\n");
    exit(0);
}

else if((len == 15) && secDigit == (34 | 37))
{
    printf("AMEX\n");
    exit(0);

}

else if((len == (16 | 13)) && firstDigit == 4)
{
    printf("VISA\n");
    exit(0);
}

else
{
    printf("INVALID\n");
    exit(0);
}

【问题讨论】:

  • 16 | 1329。你是说(len == 16 || len == 13) 吗?
  • 除了上面指出的明显误解外,您的第一行代码末尾还缺少)
  • 确实是@WeatherVane,欣赏它
  • 我觉得你需要从C书入手,学习逻辑运算是如何工作的
  • 是的@RobertoCaboni

标签: c if-statement cs50


【解决方案1】:

|是二元或运算符,而您需要的是 || ,逻辑或运算符。

语法:

a|b
(布尔值 1) || (布尔值 2)

注意:条件运算符的计算结果为布尔值

if((len == 16) && (secDigit >= 51 && secDigit<= 55))
{
    printf("MASTERCARD\n");
    exit(0);
}

else if((len == 15) && (secDigit == 34 || secDigit == 37))
{
    printf("AMEX\n");
    exit(0);

}

else if((len == 16 || len == 13)) && firstDigit == 4)
{
    printf("VISA\n");
    exit(0);
}

else
{
    printf("INVALID\n");
    exit(0);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    相关资源
    最近更新 更多