Я пытаюсь написать программу, которая будет печатать все символы ASCII, используя циклы for, но она продолжает работать в бесконечном цикле, пока я не уберу 127, я делаю что-то не так или так ведет себя ASCII?
Это приведет к сбою (бесконечный цикл):
#include <stdio.h>
int main (void)
{
for (char i = -128; i <= 127; i++)
{
printf("%d = %c\n", i, i);
}
return 0;
}
Но это нормально:
#include <stdio.h>
int main (void)
{
for (char i = -128; i < 127; i++)
{
printf("%d = %c\n", i, i);
}
printf("%d = %c\n", 127, 127);
return 0;
}
i <= 127
всегда истинно, еслиi
является 8-битным типомchar
со знаком. - person Adam Rosenfield   schedule 10.01.2014CHAR_MAX
(изlimits.h
) иchar c = CHAR_MAX; c++;
. Должен дать вам подсказку о вашей проблеме. - person John Ledbetter   schedule 10.01.2014i <= 127
всегда верно, и вам следует исследовать такие предупреждения на предмет возможных ошибок в вашем коде. - person Chris Culter   schedule 10.01.2014