A
aZa9
Занимаюсь по книге "C++ для чайников".
Написал следующую программу по этой же книге:
//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;
// Выполнение логических операций
cout << "Arg1 = 0x" << nArg1 << "\n";
cout << "Arg2 = 0x" << nArg2 << "\n";
cout << "~nArg1 = 0x" << ~nArg1 << "\n";
cout << "~nArg2 = 0x" << ~nArg2 << "\n";
// Бинарные операторы
cout << "nArg1 & nArg2 = 0x"
<< (nArg1 & nArg2)
<< "\n";
cout << "nArg1 | nArg2 = 0x"
<< (nArg1 | nArg2)
<< "\n";
cout << "nArg1 ^ nArg2 = 0x"
<< (nArg1 ^ nArg2)
<< "\n";
system("PAUSE");
return 0;
}
К сожалению, после компиляции программа выводит на экран совершенно посторонние значения.
Должно было выводиться:
Arg1 = 0x1234
Arg2 = 0xff
~nArg1 = 0xffffedcb
~nArg1 = 0xffffff00
nArg1 & nArg2 = 0x34
nArg1 | nArg2 = 0x12ff
nArg1 ^ nArg2 = 0x12cb
а вместо этого программа выводит:
Arg1 = 0x4660
Arg2 = 0x255
~nArg1 = 0x4294962635
~nArg1 = 0x4294967040
nArg1 & nArg2 = 0x52
nArg1 | nArg2 = 0x4863
nArg1 ^ nArg2 = 0x4811
ОС Win7
Может ли это быть связанно с потоками вывода?
Подскажите в чем может быть загвоздка.
С уважением,
Написал следующую программу по этой же книге:
//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;
// Выполнение логических операций
cout << "Arg1 = 0x" << nArg1 << "\n";
cout << "Arg2 = 0x" << nArg2 << "\n";
cout << "~nArg1 = 0x" << ~nArg1 << "\n";
cout << "~nArg2 = 0x" << ~nArg2 << "\n";
// Бинарные операторы
cout << "nArg1 & nArg2 = 0x"
<< (nArg1 & nArg2)
<< "\n";
cout << "nArg1 | nArg2 = 0x"
<< (nArg1 | nArg2)
<< "\n";
cout << "nArg1 ^ nArg2 = 0x"
<< (nArg1 ^ nArg2)
<< "\n";
system("PAUSE");
return 0;
}
К сожалению, после компиляции программа выводит на экран совершенно посторонние значения.
Должно было выводиться:
Arg1 = 0x1234
Arg2 = 0xff
~nArg1 = 0xffffedcb
~nArg1 = 0xffffff00
nArg1 & nArg2 = 0x34
nArg1 | nArg2 = 0x12ff
nArg1 ^ nArg2 = 0x12cb
а вместо этого программа выводит:
Arg1 = 0x4660
Arg2 = 0x255
~nArg1 = 0x4294962635
~nArg1 = 0x4294967040
nArg1 & nArg2 = 0x52
nArg1 | nArg2 = 0x4863
nArg1 ^ nArg2 = 0x4811
ОС Win7
Может ли это быть связанно с потоками вывода?
Подскажите в чем может быть загвоздка.
С уважением,