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 Exclusive OR (XOR) compound assignment operator in C. It performs a bitwise XOR operation between the left and right operands, and subsequently assigns the resulting value directly back to the left operand.

Syntax

lvalue ^= rvalue;
This expression is semantically equivalent to:
lvalue = lvalue ^ (rvalue);
However, in the compound assignment (^=), the lvalue is evaluated only once. This distinction is critical when the left operand contains side effects, such as a function call or a post-increment operator (e.g., array[i++] ^= 5;).

Operands and Type Constraints

Both operands must be of integral types (e.g., char, short, int, long, unsigned). The operator cannot be applied to floating-point types (float, double) or pointers. During execution, standard integer promotion rules apply. The operands are promoted to a common type before the bitwise operation occurs, and the final result is truncated or converted back to the type of the lvalue during assignment.

Bitwise Mechanics

The operator evaluates the operands at the binary level, comparing them bit by bit. For each corresponding bit position, it applies the XOR truth table:
  • 0 ^ 0 = 0
  • 0 ^ 1 = 1
  • 1 ^ 0 = 1
  • 1 ^ 1 = 0
If the bits at a given position are different, the resulting bit is 1. If the bits are identical, the resulting bit is 0.

Execution Example

#include <stdio.h>

int main() {
    unsigned char a = 12;  // Binary representation: 0000 1100
    unsigned char b = 10;  // Binary representation: 0000 1010

    a ^= b;                // Modifies 'a' in place

    /* 
       Bitwise evaluation step-by-step:
         0000 1100  (a = 12)
       ^ 0000 1010  (b = 10)

         0000 0110  (Result = 6)
    */

    printf("%d\n", a);     // Outputs: 6
    return 0;
}
Master C with Deep Grasping Methodology!Learn More