Вы, вероятно, путают с выходом. Я думаю, что в o/p вы видите нечто подобное.
3 ...
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ...
33! 34 ".... 125} 126 ~ 127
... 511 512 513 .. и так далее
0 to 32 are all flags(unprintable codes)
(следовательно, вы не видите выход , но только цифры для первых 33), followed by characters till 127
.Как вы можете видеть, он обтекает каждые 255 символов, чтобы дать вам тот же результат but it actually stops printing characters after multiples of 127
(это список символов 127 - http://web.cs.mun.ca/~michael/c/ascii-table.html). Он просто сбрасывается после 127 до -128 , поэтому программа продолжает печатать числа до бесконечности, даже если она сбрасывает символ. Это происходит потому, что когда вы делаете printf("%d",ch) for -127 it prints 128
, и так далее, пока ч = 255, а затем он переворачивается снова и начинает печать 256 года, и так далее, но фактическое значение ч никогда не поднимается выше 127 и, следовательно, она стремится к бесконечности
A signed char c
вы должны предоставить вам вышеупомянутый выход. Символ по существу является целым числом 8 бит, но по умолчанию, вероятно, подписан на вашем компиляторе.
http: //en.wikipedia.org/wiki/Integer_overflow –
Почему это не должно запускаться? –
Кроме того, причиной бесконечного цикла является то, что '127' всегда меньше 255. –