Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.syntblaze.com/llms.txt

Use this file to discover all available pages before exploring further.

The &= operator is the bitwise AND assignment operator in C. It performs a bitwise AND operation between the binary representations of the left and right operands, and subsequently assigns the resulting value to the left operand.
lvalue &= rvalue;
This compound assignment operator is syntactic sugar for the following equivalent expression, with the exception that the lvalue is evaluated only once:
lvalue = lvalue & (rvalue);

Mechanics and Constraints

  • Operand Types: Both operands must be of integral types (e.g., char, short, int, long, unsigned variants). The operator cannot be applied to floating-point types or pointers.
  • Evaluation Order: The rvalue expression is fully evaluated before the bitwise AND operation is performed.
  • Type Promotion: Standard integer promotion rules apply. If the operands are of different sizes or signedness, the compiler promotes them to a common type before executing the bitwise operation. The final result is then truncated or converted back to the type of the lvalue during assignment.
  • Bit-Level Logic: The operator compares each bit of the left operand to the corresponding bit of the right operand. The resulting bit is set to 1 if and only if both corresponding bits are 1. Otherwise, the resulting bit is 0.

Truth Table

Left Operand BitRight Operand BitResulting Assigned Bit
000
010
100
111

Execution Example

unsigned char a = 12;  // Binary representation: 0000 1100
unsigned char b = 10;  // Binary representation: 0000 1010

a &= b; 
Step-by-step evaluation:
  1. Align the binary values: 0000 1100 (a) 0000 1010 (b)
  2. Apply bitwise AND logic per column: 0000 1000
  3. Assign the result back to a. The variable a now holds the decimal value 8.
Master C with Deep Grasping Methodology!Learn More