【发布时间】:2016-12-23 15:52:05
【问题描述】:
我最近一直在学习 C。
我很难理解下面代码的结果。
为什么b最后是255?
unsigned char a=1;
int b=0;
do
{
b++;
a++;
}while(a!=0);
【问题讨论】:
-
你预计会发生什么?
-
想想
a在每次循环迭代中所经过的值在达到 0 之前。(你明白为什么a最终会达到 0 吗?) -
要添加到@BilltheLizard 的评论中,请特别考虑
a的大小(以位为单位)以及它可以存储的可能数字的含义。 -
@BilltheLizard 其实我不明白。是关于 ASCII 的吗?
-
@Manhooo 不,这与 ASCII 无关。正如我在回答中解释的那样,
unsigned char是 0 到 255 之间的数字。ASCII 是将 0 到 255 之间的数字(最常见的是char,有符号或无符号)转换为字符。
标签: c integer-overflow