在没有其他变量的情况下替换值的程序
program that replaces values without another variable
我有一个练习来编写一个函数,该函数将值替换为没有第三个变量的值,我尝试了一些解决方案,但没有全部得到。
我写了以下代码:
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;
}
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在未初始化映射的情况下,将值插入到映射的映射中
- 是默认情况下分配给char数组常量的值
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在已经使用Git的情况下减少编译时间
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 如何在不更改现有函数语法的情况下将普通指针替换为共享指针
- 如何在不重写整个视频文件的情况下仅替换流中的一个数据框架?(ffmpeg)
- 在没有其他变量的情况下替换值的程序
- 在这种情况下,有没有办法用单个解决方案替换两个仅在类型上不同的相似函数?
- C++ 在不使用 C 字符串库函数的情况下替换数组中的字符
- 在不使用退格键的情况下替换 Linux 终端中的文本
- 如何在没有波浪号替换的情况下获取真实文件名
- 如何使用c++uniform_int_distribution在不替换的情况下进行采样
- 如何在不重新建立堆不变量的情况下有效地替换堆的顶部元素
- 如何在复杂情况下执行宏替换
- 如何在不删除屏幕图片的情况下,将invalide替换为转到OnDraw的函数
- 可视化 如何在没有正则表达式的情况下实现C++高效的全词字符串替换