Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2008, 17:39   #1
dvmisha
Новичок
Джуниор
 
Регистрация: 18.09.2008
Сообщений: 1
По умолчанию Помогите с программой.

Есть следующая программа из самоучителя, иллюстрирующая работу побитовых операторов.

// BitTest -инициируются две переменные и выводятся результаты выполнения
// операторов ~, &, |, и ^
#include <cstdio>
#include <cstdlib>
#include <iostream>

using namespace std;

int main (int nArg, char* pszArgs[])
{
// Установка вывода в шестнадцатеричном виде
cout.setf(ios::hex, ios:: hex);
// инициализация двух аргументов
int nArg1 = 0x1234;
int nArg2 = 0x00ff;

// выполнение логических операций
// сначала выполняем унарный оператор NOT
cout << " Arg1 =0x" << nArg1<<"\n";
cout << " Arg2 =0x" << nArg2<<"\n";
cout << " ~Arg1 =0x" << ~nArg1<<"\n";
cout << " ~Arg2 =0x" << ~nArg2<<"\n";

// Теперь - бинарные операторы
cout << "nArg1 & nArg2 = ox"
<<(nArg1 & nArg2)
<< "\n";
cout << "nArg1 | nArg2 = ox"
<<(nArg1 | nArg2)
<< "\n";
cout << "nArg1 ^ nArg2 = ox"
<<(nArg1 ^ nArg2)
<< "\n";

system("pause");
return 0;
}

Результат выполнения программы должен выглядеть следующим образом:
Arg1 =0x1234
Arg2 =0xff
~nArg1 =0xffffedcb
~nArg2 =0xffffff00
nArg1 & nArg2 =0x34
nArg1 | nArg2 =0x12ff
nArg1 ^ nArg2 =0x12cb

Однако в результате компиляции и выполнении исходного файла получается следующее:

Arg1 =0x4660
Arg2 =0x255
~nArg1 =0x4294962635
~nArg2 =0x4294967040
nArg1 & nArg2 =0x52
nArg1 | nArg2 =0x4863
nArg1 ^ nArg2 =0x4811

Подскажите пожалуйста в чём ошибка?
dvmisha вне форума Ответить с цитированием
Старый 22.09.2008, 00:19   #2
reset
Пользователь
 
Регистрация: 21.09.2008
Сообщений: 14
По умолчанию

Попробуй заменить cout.setf(ios::hex, ios:: hex);
на
cout.unsetf(ios:ec);
reset вне форума Ответить с цитированием
Старый 22.09.2008, 00:20   #3
reset
Пользователь
 
Регистрация: 21.09.2008
Сообщений: 14
По умолчанию

извиняй не дописал
замени
cout.setf(ios::hex, ios:: hex);
на
cout.unsetf(ios:ec);
cout.setf(ios::hex);
reset вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с программой(( stan1k Фриланс 4 10.05.2008 16:16
помогите с программой 1234 Общие вопросы Delphi 2 21.04.2008 10:50
Помогите с программой ПлЗ. Manoff Общие вопросы Delphi 1 25.02.2008 04:41
Помогите с программой! MAKEDON Общие вопросы Delphi 3 27.12.2007 13:46