# Assign other value to a variable from two possible values

Suppose a variable x can have only two possible values a and b, and you wish to assign to x the value other than its current one. Do it efficiently without using any conditional operator.

Note: We are not allowed to check current value of x. **Examples:**

Input : a = 10, b = 15, x = a

Output : x = 15

Explanation x = 10, currently x has value of a (which is 10), we need to change it to 15.

Input : a = 9, b = 11, x = b

Output : x = 9

We could solve this problem using if condition, but we are not allowed to do that.

if (x == a) x = b; else x = a;

We could have used Ternary operator, it also checks the current value of x and based on that it assigns new value. So we cannot use this approach as well

x = x == a ? b : a;

But, we are not allowed to check value of x, so none of the above solutions work.**Solution 1:** Using arithmetic operators only we can perform this operation

x = a + b - x

This way the content of x will alternate between a and b every time it gets executed

## C++

`// CPP program to change value of x` `// according to its current value.` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to alternate the values` `void` `alternate(` `int` `& a, ` `int` `& b, ` `int` `& x)` `{` ` ` `x = a + b - x;` `}` `// Main function` `int` `main()` `{` ` ` `int` `a = -10;` ` ` `int` `b = 15;` ` ` `int` `x = a;` ` ` `cout << ` `"x is : "` `<< x;` ` ` `alternate(a, b, x);` ` ` `cout << ` `"\nAfter change "` `;` ` ` `cout << ` `"\nx is : "` `<< x;` `}` |

## Java

`// Java program to change value of x` `// according to its current value.` `import` `java.util.*;` `class` `solution` `{` `// Function to alternate the values` `static` `void` `alternate(` `int` `a, ` `int` `b, ` `int` `x)` `{` ` ` `x = a + b - x;` ` ` `System.out.println(` `"After change"` `+` `"\n"` `+` `" x is : "` `+x);` `}` `// Main function` `public` `static` `void` `main(String args[])` `{` ` ` `int` `a = -` `10` `;` ` ` `int` `b = ` `15` `;` ` ` `int` `x = a;` ` ` `System.out.println(` `"x is : "` `+x);` ` ` `alternate(a, b, x);` `}` `}` |

## Python3

`# Python3 program to change value` `# of x according to its current value.` `# Function to alternate the values` `def` `alternate(a,b,x):` ` ` `x ` `=` `a` `+` `b` `-` `x` ` ` `print` `(` `"After change x is:"` `,x)` `# Driver code` `if` `__name__` `=` `=` `'__main__'` `:` ` ` `a ` `=` `-` `10` ` ` `b ` `=` `15` ` ` `x ` `=` `a` ` ` `print` `(` `"x is:"` `,x)` ` ` `alternate(a,b,x)` `# This code is contributed by` `# Shrikant13` |

## C#

`// C# program to change value of x` `// according to its current value.` `using` `System;` `class` `gfg` `{` ` ` `// Function to alternate the values` ` ` `public` `void` `alternate(` `ref` `int` `a, ` `ref` `int` `b, ` `ref` `int` `x)` ` ` `//'ref' indicates the references` ` ` `{` ` ` `x = a + b - x;` ` ` `}` `}` `// Main function` `class` `geek` `{` ` ` `public` `static` `int` `Main()` ` ` `{` ` ` `gfg g = ` `new` `gfg();` ` ` `int` `a = -10;` ` ` `int` `b = 15;` ` ` `int` `x = a;` ` ` `Console.WriteLine(` `"x is : {0}"` `, x);` ` ` `g.alternate(` `ref` `a, ` `ref` `b, ` `ref` `x);` ` ` `Console.WriteLine (` `"After change "` `);` ` ` `Console.WriteLine(` `"x is : {0}"` `, x);` ` ` `return` `0;` ` ` `}` `}` `//This code is contributed by Soumik` |

## PHP

`<?php` `// PHP program to change value of x` `// according to its current value.` `// Function to alternate the values` `function` `alternate (&` `$a` `, &` `$b` `, &` `$x` `)` `{` ` ` `$x` `= ` `$a` `+ ` `$b` `- ` `$x` `;` `}` `// Driver Code` `$a` `= -10;` `$b` `= 15;` `$x` `= ` `$a` `;` `echo` `"x is : "` `, ` `$x` `;` `alternate(` `$a` `, ` `$b` `, ` `$x` `);` `echo` `"\nAfter change "` `;` `echo` `"\nx is : "` `, ` `$x` `;` `// This code is contributed by ajit.` `?>` |

## Javascript

`<script>` `// javascript program to change value of x` `// according to its current value.` ` ` `// Function to alternate the values` ` ` `function` `alternate(a , b , x) {` ` ` `x = a + b - x;` ` ` `document.write(` `"After change"` `+ ` `"<br/>"` `+ ` `" x is : "` `+ x);` ` ` `}` ` ` `// Main function` ` ` ` ` `var` `a = -10;` ` ` `var` `b = 15;` ` ` `var` `x = a;` ` ` `document.write(` `"x is : "` `+ x+` `"<br/>"` `);` ` ` `alternate(a, b, x);` `// This code is contributed by todaysgaurav` `</script>` |

**Output:**

x is : -10 After change x is : 15

**Time Complexity:** The time complexity of this approach is O(1) **Space Complexity:** The space complexity of this approach is O(1)**Solution 2:** A better and efficient approach is using the bitwise XOR operation.

x = a^b^x

## C++

`// CPP program to change value of x` `// according to its current value.` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to alternate the values` `void` `alternate(` `int` `& a, ` `int` `& b, ` `int` `& x)` `{` ` ` `x = a ^ b ^ x;` `}` `// Main function` `int` `main()` `{` ` ` `int` `a = -10;` ` ` `int` `b = 15;` ` ` `int` `x = a;` ` ` `cout << ` `"x is : "` `<< x;` ` ` `alternate(a, b, x);` ` ` `cout << ` `"\nAfter exchange "` `;` ` ` `cout << ` `"\nx is : "` `<< x;` ` ` ` ` `return` `0;` `}` |

## Java

`// Java program to change value of x` `// according to its current value.` `class` `GFG {` `// Function to alternate the values` ` ` `static` `int` `alternate(` `int` `a, ` `int` `b, ` `int` `x) {` ` ` `return` `x = a ^ b ^ x;` ` ` `}` `// Main function` ` ` `public` `static` `void` `main(String[] args) {` ` ` `int` `a = -` `10` `;` ` ` `int` `b = ` `15` `;` ` ` `int` `x = a;` ` ` `System.out.print(` `"x is : "` `+ x);` ` ` `x = alternate(a, b, x);` ` ` `System.out.print(` `"\nAfter exchange "` `);` ` ` `System.out.print(` `"\nx is : "` `+ x);` ` ` `}` `}` `// This code is contributed by 29AjayKumar` |

## Python3

`# Python3 program to change value of x` `# according to its current value.` `# Function to alternate the values` `def` `alternate(a, b, x):` ` ` `x ` `=` `a ^ b ^ x` ` ` `print` `(` `"After exchange"` `)` ` ` `print` `(` `"x is"` `, x)` `# Driver code` `a ` `=` `-` `10` `b ` `=` `15` `x ` `=` `a` `print` `(` `"x is"` `, x)` `alternate(a, b, x)` `# This code is contributed` `# by Shrikant13` |

## C#

` ` `// C# program to change value of x` `// according to its current value.` `using` `System;` `public` `class` `GFG {` `// Function to alternate the values` ` ` `static` `int` `alternate(` `int` `a, ` `int` `b, ` `int` `x) {` ` ` `return` `x = a ^ b ^ x;` ` ` `}` `// Main function` ` ` `public` `static` `void` `Main() {` ` ` `int` `a = -10;` ` ` `int` `b = 15;` ` ` `int` `x = a;` ` ` `Console.Write(` `"x is : "` `+ x);` ` ` `x = alternate(a, b, x);` ` ` `Console.Write(` `"\nAfter exchange "` `);` ` ` `Console.Write(` `"\nx is : "` `+ x);` ` ` `}` `}` `/*This code is contributed by Rajput-Ji*/` |

## PHP

`<?php` `// PHP program to change value of x` `// according to its current value.` `// Function to alternate the values` `function` `alternate(&` `$a` `, &` `$b` `, &` `$x` `)` `{` ` ` `$x` `= ` `$a` `^ ` `$b` `^ ` `$x` `;` `}` `// Driver Code` `$a` `= -10;` `$b` `= 15;` `$x` `= ` `$a` `;` `echo` `"x is : "` `, ` `$x` `;` `alternate(` `$a` `, ` `$b` `, ` `$x` `);` `echo` `"\nAfter exchange "` `;` `echo` `"\nx is : "` `, ` `$x` `;` `// This code is contributed` `// by akt_mit` `?>` |

## Javascript

`<script>` `// Javascript program to change value of x` `// according to its current value.` `// Function to alternate the values` ` ` `function` `alternate(a , b , x) {` ` ` `return` `x = a ^ b ^ x;` ` ` `}` ` ` `// Main function` ` ` ` ` `var` `a = -10;` ` ` `var` `b = 15;` ` ` `var` `x = a;` ` ` `document.write(` `"x is : "` `+ x);` ` ` `x = alternate(a, b, x);` ` ` `document.write(` `"<br/>After exchange "` `);` ` ` `document.write(` `"<br/>x is : "` `+ x);` `// This code contributed by Rajput-Ji` `</script>` |

**Output:**

x is : -10 After exchange x is : 15

**Time Complexity:** The time complexity of this approach is O(1) **Space Complexity:** The space complexity of this approach is O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend **live classes **with experts, please refer **DSA Live Classes for Working Professionals **and **Competitive Programming Live for Students**.