在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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP