为什么这个程序中的for循环是无限期的?

时间:2017-06-26 15:20:52

标签: c

#include <stdio.h>                                        

int main()
{
    unsigned char ch; 

    for (ch=0; ch<=255; ch++)   
        printf ("\n%d %c", ch, ch); 
}

2 个答案:

答案 0 :(得分:3)

由于ch的类型为unsigned char,因此它只能包含0到255之间的值。当您从255增加ch时,它会回绕到0,因此它会被包含在内。 s总是小于或等于255,因此循环会一直持续。

答案 1 :(得分:1)

For循环如此:

  1. 初始化
  2. 检查条件
  3. 做身体
  4. 执行后期操作(在您的情况下增加)
  5. 转到2.
  6. 您已声明:

    unsigned char ch;
    

    这样一个变量的范围是[0..255]。所以问题是一旦它达到255它就进入体内,因为255&lt; = 255之后它会增加并变为0,这再次很好,因为0 <= 255。因此它是一个无限循环。