13af6ab5fSopenharmony_ci/* 23af6ab5fSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 33af6ab5fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 43af6ab5fSopenharmony_ci * you may not use this file except in compliance with the License. 53af6ab5fSopenharmony_ci * You may obtain a copy of the License at 63af6ab5fSopenharmony_ci * 73af6ab5fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 83af6ab5fSopenharmony_ci * 93af6ab5fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 103af6ab5fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 113af6ab5fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 123af6ab5fSopenharmony_ci * See the License for the specific language governing permissions and 133af6ab5fSopenharmony_ci * limitations under the License. 143af6ab5fSopenharmony_ci */ 153af6ab5fSopenharmony_ci 163af6ab5fSopenharmony_ci 173af6ab5fSopenharmony_cilet i = 1; 183af6ab5fSopenharmony_cilet j = 2; 193af6ab5fSopenharmony_cilet b1 = true; 203af6ab5fSopenharmony_cilet b2 = false; 213af6ab5fSopenharmony_cilet r1 = new Object(); 223af6ab5fSopenharmony_cilet r2: Object | null = null; 233af6ab5fSopenharmony_ci 243af6ab5fSopenharmony_ci// nullish 253af6ab5fSopenharmony_cilet r3 = r1 ?? r2; 263af6ab5fSopenharmony_cilet r4 = r1 ?? r2 ?? r3; 273af6ab5fSopenharmony_ci 283af6ab5fSopenharmony_ci// logical (and, or) 293af6ab5fSopenharmony_cilet b01 = b1 && b2; 303af6ab5fSopenharmony_cilet b02 = b1 || b2; 313af6ab5fSopenharmony_cilet b03 = b1 && b2 && b01 && b02; 323af6ab5fSopenharmony_cilet b04 = b1 || b2 || b01 || b02; 333af6ab5fSopenharmony_cilet b05 = b1 && b2 || b01 || b02; 343af6ab5fSopenharmony_cilet b06 = b1 || b2 && b01 && b02; 353af6ab5fSopenharmony_ci 363af6ab5fSopenharmony_ci// bitwise (and, or, xor) 373af6ab5fSopenharmony_cilet i01 = i & j; 383af6ab5fSopenharmony_cilet i02 = i ^ j; 393af6ab5fSopenharmony_cilet i03 = i | j; 403af6ab5fSopenharmony_cilet i04 = i & j ^ i & j | i ^ j; 413af6ab5fSopenharmony_ci 423af6ab5fSopenharmony_ci// equality (eq, neq, strict eq, strict neq) 433af6ab5fSopenharmony_cilet b07 = i != j; 443af6ab5fSopenharmony_cilet b08 = i == j; 453af6ab5fSopenharmony_cilet b09 = r1 !== r2; 463af6ab5fSopenharmony_cilet b10 = r1 === r2; 473af6ab5fSopenharmony_ci 483af6ab5fSopenharmony_ci// relational (less, greater, less eq, greater eq), instanceof 493af6ab5fSopenharmony_cilet b12 = i < j; 503af6ab5fSopenharmony_cilet b13 = i > j; 513af6ab5fSopenharmony_cilet b14 = i <= j; 523af6ab5fSopenharmony_cilet b15 = i >= j; 533af6ab5fSopenharmony_cilet b16 = r1 instanceof Object; 543af6ab5fSopenharmony_ci 553af6ab5fSopenharmony_ci// shift (left, right, unsigned right) 563af6ab5fSopenharmony_cilet b17 = i >> j; 573af6ab5fSopenharmony_cilet b18 = i << j; 583af6ab5fSopenharmony_cilet b19 = i >>> j; 593af6ab5fSopenharmony_cilet b20 = i >> j << i >>> j; 603af6ab5fSopenharmony_ci 613af6ab5fSopenharmony_ci// additive (add, sub) 623af6ab5fSopenharmony_cilet i05 = i + j; 633af6ab5fSopenharmony_cilet i06 = i - j; 643af6ab5fSopenharmony_cilet i07 = i + j - i + j; 653af6ab5fSopenharmony_ci 663af6ab5fSopenharmony_ci// multiplicative (mul, div, mod) 673af6ab5fSopenharmony_cilet i08 = i * j; 683af6ab5fSopenharmony_cilet i09 = i / j; 693af6ab5fSopenharmony_cilet i10 = i % j; 703af6ab5fSopenharmony_cilet i11 = i * j / i % j * i / j; 713af6ab5fSopenharmony_ci 723af6ab5fSopenharmony_ci// mixed, precedence 733af6ab5fSopenharmony_cilet b21 = i * j >>> i - j; 743af6ab5fSopenharmony_cilet b22 = i > j && b1 || b2; 753af6ab5fSopenharmony_cilet b23 = i * j + i >> j < i != b1 & b2 ^ b1 | b2 && b1 || b2; 763af6ab5fSopenharmony_cilet b24 = b1 || b2 && b1 | b2 ^ b1 & b2 == i >= j << i - j % i; 773af6ab5fSopenharmony_cilet b25 = r1 ?? b1 != b2 | i <= j; 78