在C++中为变量赋值两个可能值中的另一个值


问题陈述

我们必须在不使用任何条件运算符的情况下,将一个变量赋值为两个可能值中的另一个变量的值。

描述

在这个问题中,我们给定一个变量,假设为a,它可以具有两个变量x和y中的任何一个的值。现在,我们必须创建一个程序来赋值为另一个值,而不是其当前值,而不使用任何条件运算符,即我们不能检查x的值。

让我们来看一个例子,以便更好地理解这个问题:

Input : a = 43 ; x = 43 and y = 21
Output : 21

**说明**:变量a的初始值为43,因此我们需要将变量a的最终值返回为另一个值,即21。

由于不允许我们检查变量的值,即代码中任何类型的条件语句都是无效的。因此,我们需要寻找替代的解决方案来交换变量的值。为此,可能有多种解决方案,但这里我们将讨论最可行和最简单的几种:

使用算术运算符

交换值的一种简单方法是使用两个值的加法/乘法,然后分别进行减法/除法运算,即如果我们进行了加法,则进行减法;如果使用了乘法,则进行除法。

因此,公式变为:

a = x + y - a 或 a = x * y / a

但是,这里乘法和除法运算成本更高,有时可能会抛出错误。因此,我们使用了加减组合。

示例

实时演示

#include <iostream>
using namespace std;
int main(){
   int x = 45;
   int y = 5;
   int a = x;
   cout<<"Initial value of a is : "<<a;
   a = x+y - a;
   cout<<"\nAfter changing the value of a is : "<<a;
}

输出

Initial value of a is : 45
After changing the value of a is : 5

使用按位异或运算符

一种更有效的方法是使用按位异或运算符。

因此,值将以以下方式更改:

a = x^y^a;

示例

实时演示

#include <iostream>
using namespace std;
int main(){
   int x = 56;
   int y = 78;
   int a = x;
   cout<<"Initial value of a is : "<< a;
   a = x^y^a;
   cout<<"\nAfter changing the value of a is "<<a;
   return 0;
}

输出

Initial value of a is : 56
After changing the value of a is 78

更新于:2019年10月24日

452 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告