~exp |
bitwise complement, ex. |
~100010 r. 011101 | побитово отрицание |
exp & exp | bitwise and (conjunction),
ex. |
1001 && 1100 r. 1000 | побитово "и" |
exp ^ exp | bitwise exclusive-or |
1001
^ 1100 r. 0101 |
побитово изключващо "или" |
exp | exp | bitwise or (disjunction) |
1001
| 1100 r. 1101 |
побитово "или" |
exp << exp | shift left | 11001
<< 1 r. 10010 |
преместване наляво |
exp >> exp | shift right |
11001
>> 1 r. 01100 |
преместване надясно |
int i = 10;
int j = 5;
int k = 1;
i -= 4; // i = i - 4; result 6
j *= -2; // j = j * (-2); result -10
k <<= 1; // k = k << 1; result 2
* Условна операция (операция за
избор, selection operator)
Триаргументна операция, състояща се от условие и два израза.
Пример:
x >= 0 ? x : -x
Ако условието е вярно, се
изпълнява втория аргумент, ако не е вярно се изпълнява третия
аргумент.
Операторът
y = x >= 0 ? x : -x;
е еквивалентен на
if (x >= 0) y = x;
else y = -x;
и присвоява на променливата y абсолютната стойност на променливата x.
Израз (expression), операция (operator) |
Оператор
(statement) |
x >= 0 ? x : -x |
if (x >= 0) y = x; |
y = x |
y = x; |
-b + sqrt(d) |
-b + sqrt(d); |
Operator | Description | Associativity |
:: | scope | Left |
() [ ] -> . |
Left | |
++ -- | increment, decrement | Right |
~ | bitwise complement |
|
! |
unary NOT | |
& * | reference and dereference |
|
(type) |
type casting | |
+ - | unary + and - |
|
* / % | arithmetic operators | Left |
+ - | addition, subtraction | Left |
<< >> | bitwise shifts |
Left |
< <= > >= | relational operators | Left |
== != | relational operators | Left |
& |
bitwise and |
Left |
^ | bitwise exclusive-or | Left |
| | bitwise or |
Left |
&& |
logical operator and |
Left |
|| |
logical operator or |
Left |
?: | conditional operator |
Left |
= += -= *= /= %= >>= <<= &= ^= |= |
assignment operators |
Right |
, | comma, separator | Left |
*Употреба на скобиint a = 10, b, c, d;
// right associativity
d = c = b = a; // is equivalent to d = (c = (b = a));
// left associativity
d - c + b - a; // is equivalent to ((d - c) + b) - a;
// precedence
d > c && -b <= a // is equivalent to (d > c) && ((-b) <= a)