移动超过最大限制,产生周期性序列

时间:2016-10-07 08:59:46

标签: c undefined-behavior

我编写了以下代码并在CodeBlocks IDE上执行:

main()
{
 unsigned char num=1;
 unsigned char i=0;

 for(i=0;i<255;i++)
 {
  printf("%d\n",num>>i);
 }
}

输出:     1,0,0,..(31 0),1,0 ..(31 0)

num的任何值都会生成一个周期性序列。

我知道超出限制(num的mem size)是未定义的行为,但为什么它是周期性的?

即使你离开了

,也会生成一个周期序列

1 个答案:

答案 0 :(得分:4)

允许它是周期性的,因为这可能表现为未定义的行为。

不要依赖它。