Я написав такий код і виконав його в IDE CodeBlocks:
main()
{
unsigned char num=1;
unsigned char i=0;
for(i=0;i<255;i++)
{
printf("%dn",num>>i);
}
}
Вихід: 1,0,0, .. (31 0 "с), 1,0 .. (31 0" с)
Будь-яке значення num генерує періодичну послідовність.
Я знаю, що зміщення за межі (розмір пам’яті для числа) є невизначеною поведінкою, але чому це періодично?
Генерується періодична послідовність, навіть якщо ви залишили зміну
Відповіді:
4 для відповіді № 1Це дозволено періодично, оскільки це можливий прояв невизначеної поведінки.
Не покладайтесь на те, що це саме так.