【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的魅力確實不只是他能實現任意的功能那麼簡單。

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