I am working in C++ and I had (as an exercise) to write on paper 2 answers. The first question: if we have the following declarations and initialisations of variables:
unsigned char x=250, z=x+7, a='8';
What is the value of the expression?
z|(a-'0') // (here | is bitwise disjunction)
We have unsigned char, so the number z=x+7
is reduced mod 256, thus, after writing the numbers in binary, the answer is 9.
The next question: a and b are int variables, a=1
and b=32767
.
The range of int is [-32768, 32767]
. We don't have an unsigned type here. My question is: what is the value of a+b
? How does this work with signed data types if the value of a certain variable is greater than the range of that data type?