![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| jurgal |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 29.6.2007 Репутация: нет Всего: нет |
небольшой отрывок функции:
присваиваем переменной f установки флагов формата, и теперь вопрос: оператор & сравнивает поразрядно операнды, но ведь в f все установки флагов, а сравниваем мы её только с skipws, как может получиться, что выражение (f & ios::skipws) даст нам истину? |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
jurgal,
Идет ПОРАЗРЯДНОЕ "и". В С/С++ любое (!) ненулевое значение - это истина т.е. допустим, что flags = 1111 skipws = 0010 после & получим: 0010 != 0 -> поэтому это истина -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Kuvaldis истину глаголит. Поэтому ставь "&&" место "&".
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Проверка флагов осуществляется операцией побитной "И" (&), а не логической (&&)!!! |
|||
|
||||
| jurgal |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 29.6.2007 Репутация: нет Всего: нет |
снова вопрос по флагам =)
когда использую функцию setiosflags(), то толку от неё нет никакого, т.е. ни ошибок при компилировании , ни каких либо изменений флагов на выводе:
результат получается: 1100, а когда меняю манипуляторы вот так:
то все в порядке, получаю правильный результат. Где ошибка в использовании функции setiosflags()? Это сообщение отредактировал(а) jurgal - 2.8.2007, 14:04 |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Мне тоже интересно. Думаю, проблема из той же серии, что и:
|
|||
|
||||
| korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 2 Всего: 14 |
Делай так, и все ок
Это сообщение отредактировал(а) korbian - 2.8.2007, 16:28 -------------------- korbian © |
|||
|
||||
| jurgal |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 29.6.2007 Репутация: нет Всего: нет |
в том то и дело, что если использовать манипуляторы так:
cout << hex << showbase << 100 << endl; то все в порядке, т.е. 64 - результат, а функцией setiosflags() пользоваться не получается, т.е. она не форматирует вводимое число, а оставляет как есть в десятичной системе и без указания системы счисления: 100 |
|||
|
||||
| _stranger_ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 3.10.2006 Где: город-герой Киев Репутация: 2 Всего: 2 |
а так все в порядке
видимо необходимо отчищать флаги... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |