# Operators and Expressions

An operator is a symbol that ‘operates’ one or more expression producing a value that can be assigned to the variable. The operations are represented by operators and the objects of operation are referred as operands. Some operators require two operands is known as binary operators and some operators require only one operands is known as unary operators.C language is rich in builtin operators that fall under several different categories are:
• Arithmetic operators
• Assignment operators
• Increments and Decrements operators
• Relational operators
• Logical operators
• Bitwise operators
• Precedence and Associativity operators

#### Arithmetic operators

Arithmetic operators are used for numeric calculations. C supports two unary “+ , – ” and five binary arithmetic operators ” + , – , * , / , %. The following table show the all arithmetic operators. Lets take two variable a=10 and b=5.
 Operators Descriptions Examples + Adds the two operand. a + b = 15 – Subtracts the second from the first one. a – b = 5 * Multiple the both operand a * b = 50 / Divides the first operand with the second operand. a / b = 2 % Modulus operator and give the remainder in integer division. a % b = 0 Unary + Unary + must arithmetic or pointer type and result is the value of the argument. if x=10 then +x mean 10 Unary – Unary – must arithmetic or pointer type and result is negation of the operand value. if x=10 then -x mean -10
In the examples, – changes the sing of the operand x. The unary + and unary- operators are different form the addition and subtraction operators.

#### Assignment operators

A value can be stored in a variable using assignment operators. The following table show the all assignment operators supported by C.
 Operators Descriptions Exampls = Simple assignment operator. The value of right side operand is assigned to left side operand. x = 5 5 is assigned to x += The value of left side operand will added to the value of right side operand and assign the result to the left side operand. x += 5 is equivalent to x = x + 5 -= The value of right side operand will subtracted from the value of left side operand and assign the result to the left side operand. x -= 5 is equivalent to x = x – 5 *+ The value left side operand will multiplied by the value of right side operand and assign the result to the left side operand. x *= 5 is equivalent to x = x * 5 /= The value of left side operand will divided by the value of right side operand and assign the result to the left side operand. x /= 5 is equivalent to x = x / 5 %= The integer division is carried out between the left side operand and right side operand and assign the result to the left side operand. x %= 5 is equivalent to x = x % 5 <<= Left shift and assignment operator. x <<= 5 is same as x = x << 5 >>= Right shift and assignment operator. x >>= 5 is same as x = x >> 5 &= Bitwise AND assignment operator. x &= 5 is same as x = x & 5 ^= Bitwise exclusive Or assignment operator. x ^= 5 is same as x = x ^ 5 |= Bitwise inclusive OR assignment operator. x |= 5 is same as x = x | 5

#### Increments / Decrements operators

Increments and Decrements operators are unary operators because they operate on a single operand. The following table show the increments and Decrements operators supported by C.
 Operators Descriptions Examples ++ Increments operator. The increments operator increase the integer value by 1. ++x is equivalent to x = x+1 – – Decrements operator. The decrements operator decrease the integer value by 1. –x is equivalent to x = x-1

#### Relational operators

Relational operators are used to compare values of two expressions. If the relation is true then the vale of expression is 1 and if the relation is false then the value of expression is 0.The following table show the all operators supported by C. Lets take two variable a=9 and b=5.
 Operators Meanings Expressions Relations Value if exp. < less then a Greater then a>b True 1 >= Greater then or equal to a>=b True 1

#### Logical operators

A logical operators used to connect two or more expression. The following table show the logical operators supported by C. Lets take variable a=10 and b=5.
 Operators Meanings Descriptions Examples && AND give the result is true if the both condition is true. (a==10) && (a

#### Bitwise operators

Bitwise operators operate on integers only and they are used for operations on individual bits.C support manipulation of data at the bit level. The The following table show the all bitwise operators.
 Operators Descriptions Examples & Bitwise AND. Is require two operand and compared both operand. The resulting bit is 1 only when the bits in both operand are 1, otherwise it is 0. 0 & 0 = 0 0 & 1 = 0 1 & 0 = 0 1 & 1 = 1 | Bitwise OR. Is require two operand and compared both operand. The resulting bit is 0 only when the bits in both operand are 0, otherwise it is 1. 0 | 0 = 0 0 | 1 = 1 1 | 0 = 1 1 | 1 = 1 ^ Bitwise XOR. Is require two operand and compared both operand. The resulting bit is 1, if bits of both operand have different value. Otherwise it is 0. 0 ^ 0 = 0 0 ^ 1 = 1 1 ^ 0 = 1 1 ^ 1 = 0 ~ One’s complement. Is require only one operand and flips the value of all the bits in the operand. 1 changed to 0 0 changed to 1 << Left shift. Is used for shifting the bits left side and require two operand. On shafting bits left, equal number of bit position on right are vacated.There position are filled are in with 0 bits. Bit x 101010010 Bit x << 3 110101000 >> Right shift. Shifts the bits to the right side. On shifting bits right, equal number of bit position in left are vacated. There position are filled are in with in 0 bits in unsigned integers. Bit x 0110100011 Bit x >> 3 0000100101

#### Other types of operators

C provide some other types of important operators. That are must used in C program. The following table show the operated supported by C.
 Operators Descriptions Examples & Address operator. It give the starting address of the variable name in the memory. &basic; is a variable ? : Conditional operator. It written as- TextExp ? exp 1 : exp 2. if TextExp is true, then exp 1 is evaluated. if the TextExp is false, then exp 2 is evaluated. a = 3 , b = 2 a > b ? a : b is a. , Comma operator. Is used to permit different expressions to appear in situations where only one exp would be used. a=3, b=2, c=5 sizeof Sizeof operator. gives the size of its operand in terms of bytes. The operand can be a variable,constant or any datatype. sizeof ( int ) (datatype) Cast operator. Is used for converting expression to a particular data type temporarily. The syntax- (datatype) exp; x (float) a / b

#### Precedence and Associativity of operators

Evaluation of expression having more then one operator, there are certain precedence and associativity. Lets see the expression- 2 + 3 * 5 have a two operators. If addition is performed before multiplication then result will be 25. if multiplication is performed before addition then the result will be 17.In C, operators are grouped together and each group is given a precedence level. The operators with precedence level 1 have highest precedence and with level 15 have lowest precedence. The operator with a higher precedence is evaluated first. The some operators are evaluation from left to right and from right to left depending on the level. This is known as associativity property of operator.The Following table show the all precedence and associativity operators.
 Operators Descriptions Precedence level Associativity ( ) [ ] . Function Array subscript Dot operator Arrow operator 1 (highest) Left to right + – ++ — ! * &~(datatype) sizeof Unary plus Unary minus Increments Decrements Logical NOT Indirection One’s complementType cast Size of bytes 2 Right to Left * / % Multiplication Division Modulus 3 Left to Right + – Addition Subtraction 4 Left to Right << >> Left shift Right shift 5 Left to Right < <= > >= Less then Less the or equal to Greater then Greater then or equal to 6 Left to Right = = != Equal to Not equal to 7 Left to Right & Bitwise AND 8 Left to Right ^ Bitwise XOR 9 Left to Right | Bit wise OR 10 Left to Right && Logical AND 11 Left to Right || Logical OR 12 Left to Right ? : Conditional operator 13 Right to Left = *= /= %= += -= &= ^= |= <<= >>= Assignment operators 14 Right to Left , Comma operator 15 Left to Right