我想不通的结果
A result that I can't figure out
最近在学C。
我很难理解下面代码的结果。
为什么最后是b
255?
unsigned char a=1;
int b=0;
do
{
b++;
a++;
}while(a!=0);
unsigned char
只能取 0 到 255 之间的值。在您的代码中,在循环的每次迭代中,a
和 b
都递增 1,直到 a
达到 255。当 a
为 255 并且应该再增加 1 时,它本来是 256,但是由于 unsigned char
只能取 0 到 255 之间的值,因此 a
需要值 0 而不是 256。然后,循环停止,因为 while(a!=0)
和 b
将等于 256 - 1 = 255.
最近在学C。
我很难理解下面代码的结果。
为什么最后是b
255?
unsigned char a=1;
int b=0;
do
{
b++;
a++;
}while(a!=0);
unsigned char
只能取 0 到 255 之间的值。在您的代码中,在循环的每次迭代中,a
和 b
都递增 1,直到 a
达到 255。当 a
为 255 并且应该再增加 1 时,它本来是 256,但是由于 unsigned char
只能取 0 到 255 之间的值,因此 a
需要值 0 而不是 256。然后,循环停止,因为 while(a!=0)
和 b
将等于 256 - 1 = 255.