Язык Си: поменять местами переменные


Любопытная фича — как просто поменять местами числовые переменные без буфера при помощи побитовой операции XOR (побитовое исключающее ИЛИ):

#include <stdio.h>

int main(void)
{

    int a = 3;
    int b = 5;

    printf("a = %d, b = %d\n", a, b);
    a = a ^ b;
    // a   =   11
    // b   =  101
    // a^b =  110
    printf("a = %d, b = %d\n", a, b);
    b = a ^ b;
    // a   =  110
    // b   =  101
    // a^b =  011
    printf("a = %d, b = %d\n", a, b);
    a = a ^ b;
    // a   =  110
    // b   =  011
    // a^b =  101
    printf("a = %d, b = %d\n", a, b);

    return 0;
}

Уличная магия, в рот мне ноги!


Запись опубликована в рубрике С (Си). Добавьте в закладки постоянную ссылку.

Добавить комментарий

🇬🇧 Attention! Comments with URLs/email are not allowed.
🇷🇺 Комментарии со ссылками/email удаляются автоматически.