C學習雜記(二)筆試題:不使用任何中間變量如何將a、b的值進行交換

常見的方法如下

void swap1(int *a, int *b)
{
    int temp = *a;

    *a = *b;

    *b = temp;
}

不使用中間變量的方法

void swap2(int *a, int *b)
{
    *a = *a + *b;

    *b = *a - *b;

    *a = *a - *b;
}

這種方法是不可取的,因爲a+b和a-b的運算可能會導致數據溢出。

void swap3(int *a, int *b)
{
    *a^=*b;
    *b^=*a;
    *a^=*b;
}

用按位異或的方法可以解決該面試題。

個人吐槽:感覺這道題不實用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章