我是C / C ++的菜鸟那么请原谅问题的简单性,但这里有了
unsigned char i;
for (i=0; i<1000; ++i)
if ((i%4) == 0)
printf("hello\n");
代码打印“你好”多少次。我说63,但不是其中一个选择。有人可以提供答案,但更重要的是解释为什么
答案 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我们称之为无限循环。