I've been learning C recently.
I have difficulty understanding the result of the code below.
Why is b
255 at last?
unsigned char a=1;
int b=0;
do
{
b++;
a++;
}while(a!=0);
I've been learning C recently.
I have difficulty understanding the result of the code below.
Why is b
255 at last?
unsigned char a=1;
int b=0;
do
{
b++;
a++;
}while(a!=0);
An unsigned char
can only take values between 0 and 255. In your code, at each iteration of the loop, a
and b
both get incremented by 1 until a
reaches 255. When a
is 255 and should be incremented by 1 more, it would have been 256 but since an unsigned char
can only take values between 0 and 255, a
takes the value 0 instead of 256. Then, the loop stops because of while(a!=0)
and b
will equal 256 - 1 = 255.