# A Puzzle on C/C++ R-Value Expressions?

CC++Server Side ProgrammingProgramming

Here we will see one puzzle. Suppose there is a program which is given as below, we have to tell what will be the output and why?

## Example

#include<iostream>
using namespace std;
int main() {
int x = 0xab;
~x;
cout << hex << x;
}

So what will be the output? The ~x is doing the complement operation. So is it show the complemented result in hex form?

Well the output is like the following

## Output

ab

So, there is no change. But why? The reason is ~x is converting x into its complemented form, but that value is not assigned to any variable. The expression is R-value expression. Until the Lvalue is used it will not be stored into some variables. If we put L-value it will be look like this −

## Example

#include<iostream>
using namespace std;
int main() {
int x = 0xab;
x = ~x;
cout << hex << x;
}

## Output

ffffff54
Published on 31-Jul-2019 12:08:17