Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
#1

Getchar и putchar тип данных - C++

11.10.2012, 19:52. Просмотров 442. Ответов 4
Метки нет (Все метки)

Скажите пожалуйста, почему мы используем именно тип int в данной программе, а не char? (в книжке про это написано, но я не понял что там имеют ввиду)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main()
{
    int c;
 
    while((c = getchar())!=EOF) {
        putchar(c);
    }
 
    getchar();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2012, 19:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Getchar и putchar тип данных (C++):

Getchar и putchar EOF - C++
Подскажите что за символ такой EOF? Чисто догадываясь это 0, но не работает. #include &lt;stdio.h&gt; int main() { int c; while((c...

функции getchar() и putchar() - C++
Здравствуйте всем. Такая вот задачка: Есть вот такой код: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; ...

Массив: функции getchar и putchar - C++
Задан массив. «Фамилия_стаж работы_зарплата». Преобразовать массив так: стаж работы увеличить на год, если он станет равен 10, то зарплату...

Объяснить назначение функций getchar и putchar - C++
Всем привет!) Объясните, пожалуйста, для чего нужна функция getchar и putchar максимально понятным для новичка языком, приводя пример....

ввод-вывод с использованием команд getchar-putchar - C++
Пример взят из книги Керниган, Ритчи &quot;Язык программирования С&quot; Вот такой вот код. #include &lt;stdio.h&gt; /*pods4et vvodimix simvolov*/ ...

Enum и типы данных. Как задать тип значений явно, и какой тип будет при переполнении? - C++
Пытаюсь сделать функцию с передачей нескольких параметров,используя битовые операции. В качестве параметров думаю использовать не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.10.2012, 20:34 #2
потому что константа EOF не является элементом таблицы символов ASCII, а без нее никак
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
11.10.2012, 20:51  [ТС] #3
Цитата Сообщение от Thinker Посмотреть сообщение
потому что константа EOF не является элементом таблицы символов ASCII, а без нее никак
Ну почему никак? Если я ставлю char, то программа всё равно работает. Объясните пожалуйста подробнее почему именно int
ValeryS
Модератор
6558 / 5024 / 464
Регистрация: 14.02.2011
Сообщений: 16,780
11.10.2012, 20:57 #4
Цитата Сообщение от aleksand Посмотреть сообщение
Объясните пожалуйста подробнее почему именно int
может из за размерности
тип char имеет размер 2^8 бит от -128 до+127
тип int 2^16 в досе от -32768 до +32767
2^32 в виндосе от -2147483648 до +2147483647
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
11.10.2012, 21:26 #5
Цитата Сообщение от aleksand Посмотреть сообщение
Объясните пожалуйста подробнее почему именно int
Функция должна возвращать значения 256 символов, плюс специальное значение обозначающее конец файла - всего 257 различных значений. Разрядности char'а для этого не достаточно.
Цитата Сообщение от aleksand Посмотреть сообщение
Если я ставлю char, то программа всё равно работает.
Здесь происходит неявное преобразование типов. Но есть один нюанс, в "интовом" представлении символы кодируются значениями 0х00000000-0x000000ff, а символ EOF - 0xffffffff, и если их сразу присвоить чару, то обычные символы примут вид 0x00-0xff и символ EOF - 0xff. При этом невозможно будеть различить символ с кодом 0xff(допустим в кодировке Windows 1251 это русская "я") от символа EOF и программа может завершиться намного раньше, чем задумал программист.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2012, 21:26
Привет! Вот еще темы с ответами:

Перечисляемый тип данных.Символьный тип. - C++
1.type месяц = ( янв, фев, мар, апр, май, июн, июл, авг, сен, окт, ноя, дек ); год = (високосный, невисокосный); var d:28..31;...

Фунция putchar() - C++
Всем привет! Почему, когда вывожу часть строкового массива посимвольно - функция putchar выводит каждый элемент по два раза? #include...

Путаница с типами данных TCHAR и char. Какой тип данных выбрать? - C++
Я создавал тему в соседнем разделе:http://www.cyberforum.ru/cpp-networks/thread1119035.html Насколько я понял, то POST-данные в TCHAR...

Почему putchar() выводит всю строку? - C++
У К&amp;Р есть такой пример: #include &lt;stdio.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.10.2012, 21:26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru