C# 逻辑运算符:(A>;=100&;B<;100 | | B<;A)

C# 逻辑运算符:(A>;=100&;B<;100 | | B<;A),c#,operators,C#,Operators,这个表达可以吗 (A>=100 && B<100 || B<A) (A>=100&&B您所说的是运算符优先级。AND符号的优先级高于OR,因此在您的第一个示例中,AND首先计算。如果您希望先计算OR,则应该包括括号。A>=100&&B实际上: A>=100 && B<100 || B<A (A>=100 && (B<100 || B<A)) 它输出: a= 1, b= 1 : ok=1

这个表达可以吗

(A>=100 && B<100 || B<A)

(A>=100&&B您所说的是运算符优先级。AND符号的优先级高于OR,因此在您的第一个示例中,AND首先计算。如果您希望先计算OR,则应该包括括号。

A>=100&&B实际上:

A>=100 && B<100 || B<A
(A>=100 && (B<100 || B<A))
它输出:

a=  1, b=  1 : ok=1
a=  1, b=  2 : ok=1
a=  1, b=  3 : ok=1
a=  1, b= 99 : ok=1
a=  1, b=100 : ok=1
a=  1, b=101 : ok=1
a=  1, b=199 : ok=1
a=  1, b=200 : ok=1
a=  1, b=201 : ok=1
a=  2, b=  1 : ok=1
a=  2, b=  2 : ok=1
a=  2, b=  3 : ok=1
a=  2, b= 99 : ok=1
a=  2, b=100 : ok=1
a=  2, b=101 : ok=1
a=  2, b=199 : ok=1
a=  2, b=200 : ok=1
a=  2, b=201 : ok=1
a=  3, b=  1 : ok=1
a=  3, b=  2 : ok=1
a=  3, b=  3 : ok=1
a=  3, b= 99 : ok=1
a=  3, b=100 : ok=1
a=  3, b=101 : ok=1
a=  3, b=199 : ok=1
a=  3, b=200 : ok=1
a=  3, b=201 : ok=1
a= 99, b=  1 : ok=1
a= 99, b=  2 : ok=1
a= 99, b=  3 : ok=1
a= 99, b= 99 : ok=1
a= 99, b=100 : ok=1
a= 99, b=101 : ok=1
a= 99, b=199 : ok=1
a= 99, b=200 : ok=1
a= 99, b=201 : ok=1
a=100, b=  1 : ok=1
a=100, b=  2 : ok=1
a=100, b=  3 : ok=1
a=100, b= 99 : ok=1
a=100, b=100 : ok=1
a=100, b=101 : ok=1
a=100, b=199 : ok=1
a=100, b=200 : ok=1
a=100, b=201 : ok=1
a=101, b=  1 : ok=1
a=101, b=  2 : ok=1
a=101, b=  3 : ok=1
a=101, b= 99 : ok=1
a=101, b=100 : ok=1
a=101, b=101 : ok=1
a=101, b=199 : ok=1
a=101, b=200 : ok=1
a=101, b=201 : ok=1
a=199, b=  1 : ok=1
a=199, b=  2 : ok=1
a=199, b=  3 : ok=1
a=199, b= 99 : ok=1
a=199, b=100 : ok=1
a=199, b=101 : ok=1
a=199, b=199 : ok=1
a=199, b=200 : ok=1
a=199, b=201 : ok=1
a=200, b=  1 : ok=1
a=200, b=  2 : ok=1
a=200, b=  3 : ok=1
a=200, b= 99 : ok=1
a=200, b=100 : ok=1
a=200, b=101 : ok=1
a=200, b=199 : ok=1
a=200, b=200 : ok=1
a=200, b=201 : ok=1
a=201, b=  1 : ok=1
a=201, b=  2 : ok=1
a=201, b=  3 : ok=1
a=201, b= 99 : ok=1
a=201, b=100 : ok=1
a=201, b=101 : ok=1
a=201, b=199 : ok=1
a=201, b=200 : ok=1
a=201, b=201 : ok=1
但是,如果这些只是一般项目而不是特定项目,
&
在C#中有一个than
|
,因此您应该使用:

(A>=100 && (B<100 || B<A))
基本上没有

和(&&)优先于或(| |),或者至少应该优先于或(| |),但无论是否有任何怀疑的可能性,都要以这样的方式编写表达式,以便读者(以及编译器)清楚地了解您的意图

如果你的意思是:

如果A>=100,然后如果B<100或B
(A>=100 && (B<100 || B<A)) 
(A>=100&&B(A>=100&&B<100 | | B=100&&B=100和B<100)相同(注意,B
2) B
(A>=100&(B<100|B
如果

1) A大于100,且

2) B低于A

也就是说,这与(A>=100&&B
A>=100&&B你不这样认为吗

(A=<100 && B>100 || B<A)

(A=100 | | BIt从您的问题中不清楚您要测试的是什么条件-是第二种情况吗?(您说“是否应该存在”)。您应该给出一些可能的A和B值的示例,以及您的预期输出。另外,请注意,
A>=100,B
我会再次更清楚地说-代码令人困惑,并且“纯文本”解释不是更好的解释——它们都是模棱两可的——我们无法理解你的意思,因此你无法得到正确的答案。更改了英语位以使其明确。我非常确定这就是我们想要的,因为第二个代码位声明了它(如果我错了,OP可以将其更改为另一个代码位——我只是想消除模棱两可).@paxdiablo-你怎么知道你的编辑是正确的?恐怕我们没有足够的数据来“消除歧义”-只有三个可能错误的版本。试试看。如果a<100,则该语句为“false&&(无关紧要)“。如果a>=100,b<100,那么根据定义,ba=1000,b=500
(a>=100&&(布莱特,这应该更好,这次我已经检查过了:-))
a=  1, b=  1 : ok=1
a=  1, b=  2 : ok=1
a=  1, b=  3 : ok=1
a=  1, b= 99 : ok=1
a=  1, b=100 : ok=1
a=  1, b=101 : ok=1
a=  1, b=199 : ok=1
a=  1, b=200 : ok=1
a=  1, b=201 : ok=1
a=  2, b=  1 : ok=1
a=  2, b=  2 : ok=1
a=  2, b=  3 : ok=1
a=  2, b= 99 : ok=1
a=  2, b=100 : ok=1
a=  2, b=101 : ok=1
a=  2, b=199 : ok=1
a=  2, b=200 : ok=1
a=  2, b=201 : ok=1
a=  3, b=  1 : ok=1
a=  3, b=  2 : ok=1
a=  3, b=  3 : ok=1
a=  3, b= 99 : ok=1
a=  3, b=100 : ok=1
a=  3, b=101 : ok=1
a=  3, b=199 : ok=1
a=  3, b=200 : ok=1
a=  3, b=201 : ok=1
a= 99, b=  1 : ok=1
a= 99, b=  2 : ok=1
a= 99, b=  3 : ok=1
a= 99, b= 99 : ok=1
a= 99, b=100 : ok=1
a= 99, b=101 : ok=1
a= 99, b=199 : ok=1
a= 99, b=200 : ok=1
a= 99, b=201 : ok=1
a=100, b=  1 : ok=1
a=100, b=  2 : ok=1
a=100, b=  3 : ok=1
a=100, b= 99 : ok=1
a=100, b=100 : ok=1
a=100, b=101 : ok=1
a=100, b=199 : ok=1
a=100, b=200 : ok=1
a=100, b=201 : ok=1
a=101, b=  1 : ok=1
a=101, b=  2 : ok=1
a=101, b=  3 : ok=1
a=101, b= 99 : ok=1
a=101, b=100 : ok=1
a=101, b=101 : ok=1
a=101, b=199 : ok=1
a=101, b=200 : ok=1
a=101, b=201 : ok=1
a=199, b=  1 : ok=1
a=199, b=  2 : ok=1
a=199, b=  3 : ok=1
a=199, b= 99 : ok=1
a=199, b=100 : ok=1
a=199, b=101 : ok=1
a=199, b=199 : ok=1
a=199, b=200 : ok=1
a=199, b=201 : ok=1
a=200, b=  1 : ok=1
a=200, b=  2 : ok=1
a=200, b=  3 : ok=1
a=200, b= 99 : ok=1
a=200, b=100 : ok=1
a=200, b=101 : ok=1
a=200, b=199 : ok=1
a=200, b=200 : ok=1
a=200, b=201 : ok=1
a=201, b=  1 : ok=1
a=201, b=  2 : ok=1
a=201, b=  3 : ok=1
a=201, b= 99 : ok=1
a=201, b=100 : ok=1
a=201, b=101 : ok=1
a=201, b=199 : ok=1
a=201, b=200 : ok=1
a=201, b=201 : ok=1
(A>=100 && (B<100 || B<A))
(A>=100 && (B<100 || B<A)) 
(A>=100 && B<A) 
(A=<100 && B>100 || B<A)