Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

variable value, after ternary operator

I have these lines of code:

int a = 10, b = 1;
a = --b ? b : (b = -99);
        cout << "a= " << a <<  "b= " <<b<< endl;

the output gives me b=-99 as a is not equal to 0(which makes senses) but it also changes the value of a to a=-99 how?

like image 561
Juan Vega Seco Avatar asked Feb 17 '26 07:02

Juan Vega Seco


2 Answers

Your code is the equivalent of:

int a = 10, b = 1;
b -= 1; // b == 0
int x;
if (b != 0) x = b;
else x = b = -99;
a = x;
// at this point a and b have the same value

The ternary operator works as follows:

if (--b != 0) { // b is not 0 means true
    a = b;
} else { // b is 0 means false
    a = (b = -99);
}

You assign the value to a, so --b is 0 which is considered as false. Then you assign to b value -99 and afterward, you assign b to a. So, both variables have their values -99 in the end. Hope it will help you.

like image 28
Gor Stepanyan Avatar answered Feb 19 '26 19:02

Gor Stepanyan



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!