繁体   English   中英

无符号Char循环将运行多少次

[英]how many times will an unsigned Char loop run

我是C / C ++的新手,请问这个问题的简单性,可是

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

该代码将打印“ hello”多少次。 我说63,但可惜它不是选项之一。 有人可以提供答案,但更重要的是可以解释原因

注意 :我假设使用8位char类型。

++i对等于255的i执行++i时,将溢出。这时,语言标准将i减为0,这种现象通常称为环绕。

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

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

答案是无限时间,无符号字符的范围在0-255(1个字节)之间,当超过255时,它将溢出并返回0,这意味着它将永远不会达到1000。

在这里,您已将“ i”取消为无符号字符,其范围小于1000,并且大小再次达到255时其大小为1字节(0-255),然后递减,则在任何情况下该值均不会超过1000 bcoz“ i”范围仅在0-255之间。

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

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

我说0-不是“ hello”,而是“ hellow” :-)

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

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

->在1000个循环中,它被打印250次。

没有unsigned char作为数据类型,这将是正确的。

无限时间打印“ hello”,因为原因很简单,无符号字符的上限为255,之后如果u再次递增,它们将变为零,然后又变为255,然后为零,因此变量我从未达到1000,我们称之为无限循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM