![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
EvilsInterrupt |
|
||||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: нет Всего: 9 |
Есть такая ситуация, читая про С++ книгу Эккеля увидел:
что автор говорит о том, что такая строчка не работает:
но работает такая:
т.е. без скобочек. Недолго думая, тут же создал proba.cpp и действительно! Почитав пояснение, не совсем понял его. Пояснение сводится к тому что в выражениях недопустимы скобочки. Не остановился и решил поискать терминологию, а что собственно является выражением в С++ и ... пока не нашел ( Прошу, подсказать мне в чем фокус ? Почему пример, когда выделено в скобочки, не работает ? |
||||
|
|||||
_GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: нет Всего: 7 |
EvilsInterrupt, суть в том, что переменная char c видна только внутри тех скобок, где она объявлена, следовательно при сравнении на неравенство с символом 'С' слева от знакак неравенства по сути ничего нет (как только вышли из скобок переменная "потерялась"). Нормальный компилятор с лишними скобками не скомпилит.
-------------------- Дорогу осилит идущий |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
g++ не компилит.
Добавлено через 32 секунды у тебя какой компилятор? -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
xvr |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
![]() Суть сводится к тому, что в while(char c=cin.get() != 'C') внутри while использованно НЕ выражение Стандарт:
Во втором же случае
|
||||||||
|
|||||||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
пол-года назад я тоже задавал подобные вопросы
вот тема: http://forum.vingrad.ru/forum/topic-264505.html |
|||
|
||||
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: нет Всего: 9 |
все равно не понял, вернусь к этому вопросу позже, спасибо за внимание ;)
|
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
а разве get() не выполнится перед этим ? п.с. мне всегда казалось, что в этом случае сравнивается даже не значение char, а результат операции присвоения :S |
|||
|
||||
xvr |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
А чего тут непонятного? В while, if, for и пр. в качестве условия можно использовать выражение или определение переменной. В последнем случае именно значение этой переменной и становится условием. Определять переменные внутри выражения нельзя.
Запись while(char c=cin.get() != 'C') приблизительно эквивалентна такой
|
||||||||
|
|||||||||
A5uKa |
|
||||||||||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
Я не о том... Я просто хочу сказать, что сравнение идёт не с переменной.
присвоение происходит после сравнения. Точнее присвоения вообще НЕ происходит, при выходе из тела if или while оно вернётся и станет тем, чем было. то есть не
а
Это сообщение отредактировал(а) A5uKa - 8.1.2010, 00:09 |
||||||||||
|
|||||||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
имхо с for смотрится симпатичнее :
хотя тоже не до конца соответсвует примеру.. |
|||
|
||||
A5uKa |
|
||||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
почему ? только не понимаю зачем вообще char переменная тут у
Ведь в условии присвоения не происходит. |
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
как это не происходит ?
а нам за телом и не нужно.. мы ее внутри тела будем использовать ![]() Добавлено через 2 минуты и 24 секунды ммм.. а что Вы называете телом while ? описание или блок цикла ? Добавлено через 3 минуты и 58 секунд потому что условие/присвоение пишется один раз.. т.е. нет копи-паста.. |
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
Только НЕ этого тела, а того, что в круглых скобках после равно То есть вообще не будем. Можете cout << c; для примера поставить... п.с. рекурсия ещё лучше :P Это сообщение отредактировал(а) A5uKa - 8.1.2010, 01:16 |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Вы имеете ввиду что
позвольте тогда узнать куда девалось выше присвоенное значение ? а также что хранит тогда сейчас c ? неужто мусор ? или может та "c" в теле цикла не существует ? _________________ | хочу подробностей | |_________________| | | ![]() |
||||
|
|||||
A5uKa |
|
||||||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
Именно это я и хочу сказать.
Я могу соврать, если скаже, что присвоения как такового не было вообще, но я его не наблюдаю ![]()
Грязный и вонючий ![]() вот ещё пример
на самом деле сравнивается j и 5 А i вообще не при делах выводится единицой. Бурной фантазией можно предположить почему int i = (int)(bool)(5==5) но как знать ![]() p.s. ну всё ... Вы наверное уснули =) Пойду и я спать ... Это сообщение отредактировал(а) A5uKa - 8.1.2010, 02:51 |
||||||
|
|||||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 4 Всего: 64 |
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
А теперь давайте подумаем откуда взялась единица.. и почему если и то заменив == на != (ну или одну из 5 заменить другим значением) начнет выводиться ноль ?! ну и ответ: кстати он был дан еше в 4м посту и Вы его даще цитировали:
![]() Это сообщение отредактировал(а) mes - 8.1.2010, 10:03 |
||||
|
|||||
A5uKa |
|
||||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
vcl60.bpl >____<
не знаю, но это было одной из моих догадок (Привидение с типа BOOL) в любом случае в Char мы получаем Смайли ![]() Не уж то (char)True == ' ![]() |
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
смайлик получите не в char а при выводе значения как char. напишите cout << (int)c; и увидите значение. ага. думаю Вам будет полезен для разбора этой ситуации следующий пример
|
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 4 Всего: 64 |
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
A5uKa |
|
||||||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
Однако всё же я вывожу значение char как char , значит там всё же смайл ![]()
только зачем
|
||||||
|
|||||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 4 Всего: 64 |
mes, может лучше так:
чтобы понятней было ![]() -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
A5uKa |
|
||||||||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
я знаю даже то, что кто-то не убрал галочки в свойствах проекта ![]() Добавлено @ 14:53
Тогда это уже не смайл ![]() И зачем
может вы имели ввиду
то, что 1 - это смайл, а - 0 соотвественно пробел ... ну я знаю >_< Это сообщение отредактировал(а) A5uKa - 8.1.2010, 14:55 |
||||||||
|
|||||||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 4 Всего: 64 |
Эт да. Чтобы по легче был. Я же не знал, что у тебя среды нет. Но судя по всему, он уже и не нужен. Уже и так разобрались. ![]() -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
![]() Я боюсь устанавливать - ведь работать прийдётся >_< Завтра установлю и буду мучать мою старую тему про нашествие терминаторов Терминатор 4 - ДБГридо Чек-Боксный Мутант АТАКУЕТ |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
нет: я имел в ввиду именно 1+flag. Вы бы попробовали .. запустили бы.. Дело в том что служебные символы (с кодами 0-31) не ограничиваются одним смайликом.. в примере в зависимости от флага будет печататься либо норамльный, либо инверсный смайлик. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
вот набросал еще один примерчик, надеюсь поинтересней:
Это сообщение отредактировал(а) mes - 8.1.2010, 15:39 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
чего то потянуло меня на консоль..
предыдущие два примера могут пригодиться при составлении консольной игры карты, вот еще один в довесок для определения значка пола противника :
Это сообщение отредактировал(а) mes - 8.1.2010, 15:57 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
вот еще один примерчик..правда мало применимый, но для разбора пойдет :
кричащий и мигающий смайлик;
Это сообщение отредактировал(а) mes - 8.1.2010, 16:17 |
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 4 Всего: 64 |
mes сам себе приятный...
![]() -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 4 Всего: 64 |
т.е. никто тебе не нужен. ![]() Без обид ![]() -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |