无符号Char循环运行多少次

时间:2011-09-20 11:07:19

标签: c++ c for-loop

我是C / C ++的菜鸟那么请原谅问题的简单性,但这里有了

unsigned char i;
for (i=0; i<1000; ++i)
  if ((i%4) == 0)
    printf("hello\n");

代码打印“你好”多少次。我说63,但不是其中一个选择。有人可以提供答案,但更重要的是解释为什么

6 个答案:

答案 0 :(得分:7)

注意:我假设有8位字符类型。

++i执行i等于255时,您将溢出。此时语言标准规定i变为0,这种现象通常称为环绕。

因此,对于i<1000的所有值,您有一个无限循环,因为i

答案 1 :(得分:4)

我建议您通过运行代码进行实验。如果这不能解决问题,请尝试打印出条件为真的i值。如果您注意到i的值如何变化的任何异常,请考虑可能的原因。

答案 2 :(得分:3)

答案是无限时间,无符号字符的范围在0-255(1字节)之间,当它超过255时会溢出并返回0表示它永远不会达到1000 ..无限循环

答案 3 :(得分:1)

你在这里删除了“i”作为无符号字符,其范围小于1000,当它再次达到255时,其大小为1字节(0-255),然后在任何条件下递减,该值不会超过1000 bcoz“我“的范围只有0-255。

所以for循环不会失败n执行无限期

我希望你明白我的意思...... !!!!!!!!!!

答案 4 :(得分:0)

我说0 - 它不是“你好”,而是“hellow”: - )

但现在实际上:i的值为0,1,2,... 999.这些是1000个值。

什么时候打印字符串?如果i为0,4,8,12,...... - 那么每4个循环一次。

- &GT;在1000个循环周期中,它被打印250次。

如果没有unsigned char作为数据类型,则会出现这种情况。

答案 5 :(得分:0)

无限时间“你好”打印因为原因很简单,无符号字符的限制高达255,如果你再次增加它,它们将变为零&amp;再次,他们达到255然后为零,所以变量我永远不会达到1000我们称之为无限循环。