在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
广告