if value of a=55 , b=10
then predict output of that code and why
while(b)
b ^= a ^= b ^= a %= b;
m getting confused what it means
b ^= a ^= b ^= a %= b;
predict value of a
if value of a=55 , b=10
then predict output of that code and why
while(b)
b ^= a ^= b ^= a %= b;
m getting confused what it means
b ^= a ^= b ^= a %= b;
predict value of a
Here, % is the modulo operator (x%y returns the remainder when x is divided by y)
^ is bitwise XOR operator (x^y implies convert x and y to binary form apply xor ie 1^1=0, 0^0=0, 1^0=1, 0^1=1)
Statements with multiple = operator are evaluted from right to left. So b ^= a ^= b ^= a %= b is equivalent to:
a%=b; b^=a; a^=b; b^=a; or equivalently
a=a%b; b=b^a; a=a^b; b=b^a;
To simplify things, the statements (b^=a; a^=b; b^=a;) are used to swap the values of a and b . You can check this by taking any 2 numbers.
Now the code is reduced to:
while(b)
{ a=a%b;
swap(a,b);
}
Initially, a=55,b=10;
On 1st iteration, a=55%10=5 then swap(a,b) gives a=10, b=5;
On 2nd iteration, a=10%5=0 then swap(a,b) gives a=5, b=0
As b=0, the while loop terminates and the final values are a=5 and b=0.
And at the end, variable ‘a’ has the value of gcd(a,b).
I hate such questions, it’s not used in real programming anyway…