search

Home  >  Q&A  >  body text

如何不使用第三个变量,交换两个char的值

对于int a 和 int b 可以使用下面的代码 互换a和b的值

void function(inta, int
b){
        a=a+b;
        b=a-b;
        a=a-b;
    }

如果交换 两个char类型,该怎么办喃?

高洛峰高洛峰2948 days ago948

reply all(1)I'll reply

  • 三叔

    三叔2016-11-01 10:58:01

    一般的

    char型实际上是byte型,只有一个字节,因此必须考虑溢出的问题,不能用加法。
    当然,实质上int型也不能用加减法这样来交换,用位异或是个通用的办法。

    void main()
    {
        char a = 'x';
        char b = 'y';
        a ^= b;
        b ^= b;
        a ^= b;
        std::cout << "a:"<< a <<"-b:" << b<

    特殊的

    如果你在windows平台下的话,可以使用内置函数

    void main()
    {
        char a = 'x';
        char b = 'y';
        b=InterlockedExchange8(&a, b);
        std::cout << "a:"<< a <<"-b:" << b<

    延伸的

    你可以使用汇编来直接自行完成

    void main()
    {
        char a = 'x';
        char b = 'y';
        __asm
        {
            mov al,a
            xchg al,b
            mov a,al
        }
        std::cout << "a:"<< a <<"-b:" << b<


    reply
    0
  • Cancelreply