![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Clinuxoid |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 27.10.2011 Репутация: 1 Всего: 1 |
Здравствуйте уважаемые форумчане.
Сейчас попытаюсь обьяснить суть вопроса и из чего он возник. И так, с С мне пришлось столкнутся в университете. До этого же с программированием я сильно не заморачивался. Моих знаний хватало на HTML ,CSS и так всякие мелочи. (короче совсем не на програмирование). Теперь же я учу С и прошлось столкнутся с некоторыми вопросами. В университете мы учимся по книге "Керниган.Б и Ричи.Д Программирование на С" Думаю многим эта книга известна. И так вопрос! В главе в которой рассказывают про getchar упоминается что при применении переменная получает значение 0 или 1 . А вот в каких случаях это происходит никто ничего не говорит. А в итоге дается задание в которм просят проверить что выражение getchar () != EOF равно 1 или 0. Как результат не могу понять когда же оно 0 и когда 1. Дабы дать пример того примера который дан в книге напишу листинг программы которую дают авторы. Грубо я ее понимаю. Но внятных обьяснений ей не дают.
Прошу не судить очень строго, в программировании я полный профан потому и прошу помощи у опцтных мира сего ![]() Это сообщение отредактировал(а) Clinuxoid - 27.10.2011, 02:55 |
|||
|
||||
newbee |
|
||||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 3 Всего: 19 |
getchar возвращает символ, прочитанный из stdin (например, введенный с клавиатуры), или EOF - некоторую константу, которая говорит, что больше читать нечего.
Можно преобразовать getchar()!=EOF в !(getchar()==EOF), может тебе так проще будет сообразить. -------------------- You're face to face With man who sold the world |
||||
|
|||||
Clinuxoid |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 27.10.2011 Репутация: 1 Всего: 1 |
Огромное спасибо за ответ, думал уже никто не ответит. Превую часть написанного понимал. А вот с воторой же все обстояло хуже. Но глядя на это с высоты обьясненного вами понимаю что это простейшая арифметика. != ( обозначает не равно ); == (обозначает равно) . Иными словами те самые 0 и 1. Жаль только авторам не написать что они черезчур замудрили в обьяснении. Не ужель им так трудно было написать то же самое без хитрозадых закрутасов. Я над этим часа три просидел пытаясь перечитать страницу и вникнуть. А все настолько просто. ![]() Еще раз огромнейшее вам спасибо. ![]() |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Возможно, ты начал читать не с начала - где то раньше в книжке написано про == и !=, что 1 означает true, а 0 false. А возможно переводчики намудрили.
Модератор: поменял 0 и 1 местами, чтобы новички не путались Это сообщение отредактировал(а) bsa - 27.10.2011, 14:36 |
|||
|
||||
Clinuxoid |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 27.10.2011 Репутация: 1 Всего: 1 |
Да нет, начал читать исключительно с начала. ![]() Это сообщение отредактировал(а) Clinuxoid - 27.10.2011, 14:24 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Clinuxoid, ну значит авторы предположить не могли, что кто-то не знает таких элементарных вещей.
Вообще-то, 0 и 1 и операторы сравнения это два разных понятия. Если вторые выполняют какое-то действие, то первые являются результатом этого действия. Причем, положительный результат не обязательно 1. Он может быть ЛЮБЫМ ОТЛИЧНЫМ ОТ НУЛЯ. Кстати, компилятор MSVC предупреждает об этом при попытке использования результата булевой операции (это та, которая возвращает true или false) в обычной арифметике. |
|||
|
||||
Clinuxoid |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 27.10.2011 Репутация: 1 Всего: 1 |
Дело в том что, то что true и false это 1 и 0 . Я то знаю (и надо быть уникумом чтобы этого не знать) но то что запутало, это то что они привязывали это с getchar (отсюда кстати и название темы, если вы заметили). И вот тут то как раз я и начал путатся. Оттуда и возник вопрос когда же он 0 а когда 1? Потому что особенно все эт никто не обьяснял. Легче всего указать накого то пальцем и сказать "дебил". Просто тема для меня новая и пытаюсь нормально в ней разобратся. Заметь, многие бы не обратили внимания и пошли бы дальше. Я же решил разобратся, потому и задал этот вопрос. Что же касается MSVC. Visual studio не использую так как работаю непосредственно на linux. И компилирую при помощи GCC. В принципе меня он устраивает и отчеты выводит вполне нормальные. Просто как я уже сказал я в этом деле новичек и некоторые вещи пока не понимаю. Но надеюсь скоро поднаторею в этом деле, потому что интересно. |
||||
|
|||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |