| ~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)