【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的魅力确实不只是他能实现任意的功能那么简单。

猜你喜欢

转载自blog.csdn.net/qq_41866437/article/details/79778957