NANDHOO.

Operators and Expressions

Chapter 7: Operators and Expressions


Operators are the verbs of the C language. They allow you to manipulate data at the bit and byte level. Understanding operator precedence and associativity is crucial to avoiding subtle bugs.


I. Arithmetic and Relational Operators


TypeOperatorsExamples
Arithmetic+, -, *, /, %10 % 3 = 1
Relational==, !=, >, <, >=, <=5 == 5 is 1 (true)
Logical&&, `

Integer Division Warning

In C, if both operands of / are integers, the result is an integer (truncated). To get a float result, at least one operand must be a float.

int x = 5 / 2;     // result: 2
float y = 5.0 / 2; // result: 2.5

II. Bitwise Operators


C's primary strength for system programming is its ability to manipulate individual bits directly.


OperatorActionPurpose
&Bitwise ANDMasking bits
``Bitwise OR
^Bitwise XORToggling bits
~Bitwise NOTOne's complement
<<Left ShiftMultiply by power of 2
>>Right ShiftDivide by power of 2

// Setting a specific bit (Bit 3)
unsigned char reg = 0x00;
reg |= (1 << 3); // reg is now 0x08

III. Increment and Decrement


  • Prefix (++x): Increments the value and then uses it in the expression.
  • Postfix (x++): Uses the current value in the expression and then increments it.

int a = 5, b;
b = a++; // b is 5, a becomes 6
b = ++a; // a becomes 7, b is 7

IV. Precedence and Associativity


Operators are not evaluated simply left-to-right. They follow a hierarchy.


Primary(), [], ->Multiplicative*, /, %Additive+, -


Mnemonic: Always use parentheses () when you are unsure about precedence. It makes the code more readable and prevents logical errors.


V. Ternary Operator


The only three-operand operator in C. It is a shorthand for an if-else statement.

// condition ? value_if_true : value_if_false
int max = (a > b) ? a : b;

VI. Compound Assignment


Shortcuts like +=, *=, &= perform the operation and the assignment in a single step.

x += 5; // same as x = x + 5