[英]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,这种现象通常称为环绕。
因此,您有一个无限循环,因为对于所有i
值i<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.