Это то, что происходит в вашей программе
int c;
зарезервировать место для int
(вызов этого пространства c
) и не беспокоиться о его содержимом.
while(c = getchar( ) != EOF)
Элемент в скобках можно записать как c = (getchar( ) != EOF)
, поскольку оператор присваивания имеет более низкий приоритет, чем оператор неравенства.
getchar()
ожидает нажатия клавиши и возвращает значение нажатой клавиши - Это значение проверяется по EOF
- В отличие от этого, результат оператора неравенства равен
1
- , а значение
1
помещается в пространство с именемc
.
Затем внутри цикла while
{
putchar(c);
}
вы печатаете символ со значением 1. Как вы заметили, на вашем компьютере персонажсо значением 1 не отображается красивый формат при отображении:)
Если вы действительно хотите напечатать значения 0
или 1
с красивыми форматами, попробуйте это
c = 0; /* or 1 */
putchar('0' + c);
Если вы хотите напечатать значение от 0 до 9 как символпопробуйте это
c = 5; /* or 7, or 0, ... */
putchar('0' + c);