如何存储值供后续使用 怎样正确完成两个变量的交换操作
错误原因
你给出的代码会覆盖原始值导致交换失败:
- 执行第一行
xval = yval时,xval原本存储的3会被直接替换为yval的值8,此时原始的3已经从内存中丢失 - 执行第二行
yval = xval时,xval已经是8,赋值后yval也会变为8,最终两个变量取值相同。
临时变量交换方案
这是所有编程语言都通用的标准交换实现,完全符合你提到的「先存储某个值供后续使用」的逻辑:
- 先定义一个临时变量存储其中一个变量的原始值,避免被覆盖
- 再依次完成两个变量的赋值
示例代码如下:
// 存储xval的原始值到临时变量temp temp = xval; // 将yval的值赋值给xval xval = yval; // 将temp中存储的xval原始值赋值给yval,完成交换 yval = temp;
用你给出的示例数值运行的完整流程:
- temp = 3(xval的初始值)
- xval = 8(yval的初始值)
- yval = 3(temp存储的xval初始值)
最终得到xval=8、yval=3,符合交换预期。
其他可选交换方案
- 如果你使用Python、JavaScript、Go等支持解构赋值的语言,可以不用临时变量,一行完成交换:
xval, yval = yval, xval - 仅针对数值类型的场景,也可以用算术运算实现(可读性差,不推荐生产环境使用):
xval = xval + yval; // 3+8=11,xval现在为11 yval = xval - yval; // 11-8=3,yval现在为3 xval = xval - yval; // 11-3=8,xval现在为8
内容的提问来源于stack exchange,提问作者Theriddler748
相关产品推荐
相关产品推荐

