在没有其他变量的情况下替换值的程序

program that replaces values without another variable

本文关键字:情况下 替换 程序 变量 其他      更新时间:2023-10-16

我有一个练习来编写一个函数,该函数将值替换为没有第三个变量的值,我尝试了一些解决方案,但没有全部得到。

我写了以下代码:

void swap1(int* p1, int* p2) {
    p1++;
    *p1 = *p2;
    p1--;
    *p2 = *p1;
    p1++;    
    cout << *p1 << endl;
}

主要:

    int main() {
    int n1 = 5, n2 = 8;
    cout << "before swap: " << endl;
    cout << "value 1: " << n1 << " value 2: " << n2 << endl;
    swap1(&n1, &n2);
    cout << "after swap: " << endl;
    cout << "value 1: " << n1 << " value 2: " << n2 << endl;
    return 0;
}

我得到以下输出:

before swap:
value 1: 5 value 2: 8
8
after swap:
value 1: 5 value 2: 5
Press any key to continue . . .

为什么当我在函数内打印时,这确实交换了值,但main没有?

怎么了?

*p1 = p1++;>>为什么不工作呢?(我在理论上试图做的事情(

无溢出。

见 http://www.geeksforgeeks.org/swap-two-numbers-without-using-temporary-variable/

 int main() {
    int n1 = 5, n2 = 8;

    cout << "before swap: " << endl;
    cout << "value 1: " << n1 << " value 2: " << n2 << endl;
     n2 = n1^n2;
     n1 = n1^n2;
     n2 = n1^n2;
    cout << "after swap: " << endl;
    cout << "value 1: " << n1 << " value 2: " << n2 << endl;
    return 0;
}

正如前面的答案所建议的那样...只需按照您提出的表格输入表格:

void swap2(int* p1, int* p2) {
  if(p1 != p2) {
    *p2 = (*p1)^(*p2);
    *p1 = (*p1)^(*p2);
    *p2 = (*p1)^(*p2);
  }
}
 int main() {
    int n1 = 5, n2 = 8;

    cout << "before swap: " << endl;
    cout << "value 1: " << n1 << " value 2: " << n2 << endl;
     n2 = n1+n2;
     n1 = n2 -n1;
    n2 = n2-n1;

    cout << "after swap: " << endl;
    cout << "value 1: " << n1 << " value 2: " << n2 << endl;
    return 0;
}
相关文章: