Logical operators: (A> = 100 && B <100 || B <A)

Is this expression okay?

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

I am not sure there should be:

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

I need to say that when A> = 100 AND (B <100 OR B <A).

+3
source share
7 answers

What you are talking about is operator priority. The AND character has a higher priority than OR, so in the first example, I. is calculated first. If you want to calculate OR first, then yes, you must include brackets.

+3
source

Well, actually:

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

matches with:

(A>=100 && B<A)

This is because if B < 100, it is automatically less than Ac A >= 100, and here is the code that proves it (in C, but C # should be the same):

#include <stdio.h>
static void test (int a, int b) {
    printf ("a=%3d, b=%3d : ok=%d\n", a, b,
        (a>=100 && (b<100 || b<a)) == (a>=100 && b<a));
}
int arr[] = {1,2,3,99,100,101,199,200,201};

int main (void) {
    int i, j;
    for (i = 0; i < sizeof(arr)/sizeof(*arr); i++) {
        for (j = 0; j < sizeof(arr)/sizeof(*arr); j++) {
            test (arr[i], arr[j]);
        }
    }
    return 0;
}

It outputs:

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))
+1

A>=100 && B<100 || B<A : B<A.

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

+1
A>=100 && B<100 || B<A

- :

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

&& , ||

0

...

(&) - , , - (||) - , - , , ( , , ) .

, :

A >= 100, , B < 100 B < A

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

B < 100 - , , , , ,

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

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

, :

1) A >= 100 B < 100 ( , B < A )

2) B < A < 100

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

,

1) A 100

2) B A

,. , (A >= 100 & B < A) ( B 100)

0

?

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

,

0

Source: https://habr.com/ru/post/1759275/


All Articles