1. 程式人生 > >【C語言】互換兩個數的值的三種方法

【C語言】互換兩個數的值的三種方法

        我在第一次C語言學習的過程中,對於C語言的認識不夠深刻,我覺得這種解法已經非常厲害。畢竟能將簡單的兩個數的交換用計算機的邏輯編寫出來,並實現正確執行......

int main()
{
    int num1 = 10;
    int num2 = 20;
    int tmp = 0;

    tmp = num1;
    num1 = num2;
    num2 = tmp;

    return 0;
}

        然而,通過這兩天的學習,我發現前一種方法在實踐中並不完美。這段程式碼在執行的過程中會建立一個臨時變數,多佔了一塊記憶體空間。對記憶體的利用很浪費。

        下面是我瞭解到的一種新的演算法:

int main()
{
    int num1 = 10;
    int num2 = 20;

    num1 = num1 + num2;
    num2 = num1 - num2;
    num1 = num1 - num2;

    return 0;
}

        這不是結束,當我接觸到位操作時,這裡我通過學習瞭解到一種更加厲害的演算法。

int main()
{
    int num1 = 10;
    int num2 = 20;

    num1 = num1^num2;
    num2 = num1^num2;
    num1 = num1^num2;

    return 0;
}

    同樣是兩個數值的交換,C語言通過演算法的不同實現了同一種功能,很棒的一題多解。C的魅力確實不只是他能實現任意的功能那麼簡單。