Код (Text): #define IMAGE_NT_SIGNATURE 0x00004550 cout << cout.hex << IMAGE_NT_SIGNATURE << endl; выводит 204817744 какая-то наверно глупая ошибка с недосыпа
Код (Text): #define IMAGE_NT_SIGNATURE 0x00004550 std::cout << std::hex << std::setfill('0') << std::setw(8); std::cout << IMAGE_NT_SIGNATURE << std::endl; std::cout << ~IMAGE_NT_SIGNATURE << std::endl;
Booster не это крайности сложно так им что-ли было просто перегрузить по нормальному оператор для улонга ? и я ещё не понял что в первоначальном варианте 204817744 означало ?
В С++ можно делать так: Код (Text): struct A { enum {zero}; static const int one = 1; static int two() { return 2} }; int main() { A a; int v1 = a.zero; int v2 = a.one; int v3 = a.two(); } В качестве 'id-expression' в выражении доступа к члену класса (по указателю в том числе) могут быть использованы любые (формирующие валидное выражение) члены, которые прямо и или косвенно содержит класс. Поэтому здесь: Код (Text): #define IMAGE_NT_SIGNATURE 0x00004550 cout << cout.hex << IMAGE_NT_SIGNATURE << endl; сначала было напечатано численное значение манипулятора std::hex - 2048, а потом число 0x00004550 в десятичной системе счисления - 17744.
W4FhLF тут доки ещё поизучал возник вопрос : что лучше, твои манипуляторы или компонентныи функции ios int width( int) и char fill( char) как это делать более правильно?