【发布时间】:2019-12-14 14:07:32
【问题描述】:
我正在完成一些 C# 编码练习,并遇到了一些令我难以理解的运算符逻辑。
以下代码行的计算结果为 false:
int a = 40, int b = 50;
if (a >= 20 && a <= 30 && (b < 20 || b > 30))
{
return a;
}
但是,如果我从 if 语句中删除括号,它的计算结果为 true。
if (a >= 20 && a <= 30 && b < 20 || b > 30)
{
return a;
}
谁能解释我错过了什么?鉴于 a 不在 20 到 30 之间,它不应该返回 false 吗?我不明白为什么将 if 语句的 b 部分放在括号中会使其评估为 false。
它是否将“b > 30”之前的所有内容都作为单个条件进行评估?
【问题讨论】:
-
运算符优先级决定了不使用括号时表达式的分组方式。
-
@Sweeper:这仅适用于您混合的所有运算符具有相同优先级的情况。
||和&&没有。并且评估顺序不会受到影响。 -
@BenVoigt 是的,你是对的,刚刚检查了规范。
-
感谢所有反馈。我现在明白我哪里出错了。
标签: c#