Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
GokYak
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 20
#1

Программа для демонстрации работы побитовых операторов не компилируется

27.09.2016, 19:17. Просмотров 830. Ответов 6
Метки нет (Все метки)

Добрый вечер всем!
Я учусь программированию на С++. Написал небольшую программу из книжки. Программа для демонстрации работы побитовых операторов. В 10й строке где устанавливается вывод в шестнадцатеричном виде, IDE не может определить идентификатор ios. Не могу понять, то ли ошибка в книжке, то ли я чего-то не добавил.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// BitTest - инициируются две переменные и
//          выводятся результаты выполнения
//          операторов ~, &, |, ^
#include <stdio.h>
#include <iostream>
 
int main (int nArg,  char** pszArgs())
{
    // установка вывода в шестнадцатерично виде
    std::cout.setf(ios::hex, ios::hex);
    // инициализация двух аргументов
    int nArg1 = 0x1234;
    int nArg2 = 0x00ff;
    
    // Выполнение логических операций
    // Сначала применяем унарный оператор NOT
    std::cout << "Arg1    = 0x" << nArg1 << "\n";
    std::cout << "Arg2    = 0x" << nArg2 << "\n";
    std::cout << "~nArg1  = 0x" <<~nArg1 << "\n";
    std::cout << "~nArg2  = 0x" <<~nArg2 << "\n";
    
    // Теперь - бинарные операторы
    std::cout << "nArg1 & nArg2 = 0x"
            <<(nArg1 & nArg2)
            << "\n";
    std::cout << "nArg1 | nArg2 = ox"
            << (nArg1 | nArg2)
            << "\n";
    std::cout << "nArg1 ^ nArg2 = 0x"
            << (nArg1 ^ nArg2)
            << "\n";
    return 0;
            
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2016, 19:17
Ответы с готовыми решениями:

Почему не работает программа-пример для демонстрации работы функции strcmp (из книги Шилдта)?
Здравствуйте, помогите пожалуйста разобраться, почему программа не выполняется...

Программа компилируется в Borland 6.0 но не компилируется в Visual Studio 2008
Ета програма компилируетса в борланде 6.0 но не компилируетса в Visualstudio...

Перегрузка операторов для работы с матрицами
нужно перегрузить оператор + для сложения двух матриц. Всё сделал, и всё...

Перегрузка операторов для работы со стеком
Текст задания: Создать объект &quot;динамический стек&quot;. Перегрузить операции +, -,...

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this
Добрый день . Помогите понять принцип работы перегрузки операторов. ...

6
nmcf
6271 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
27.09.2016, 19:21 #2
Лучший ответ Сообщение было отмечено GokYak как решение

Решение

std:: добавь.
1
GokYak
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 20
27.09.2016, 20:30  [ТС] #3
Спасибо, теперь понятно.

Добавлено через 19 минут
Еще одна не понятная штука в этом же коде. Программа при выполнении меняет значения аргументов.
0
nmcf
6271 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
27.09.2016, 21:04 #4
Подробнее.
1
zss
Модератор
Эксперт С++
7092 / 6624 / 4195
Регистрация: 18.12.2011
Сообщений: 17,467
Завершенные тесты: 1
27.09.2016, 21:14 #5
Лучший ответ Сообщение было отмечено GokYak как решение

Решение

Цитата Сообщение от GokYak Посмотреть сообщение
std::cout.setf(ios::hex, ios::hex);
C++
1
2
   cout.unsetf( ios::dec );
   cout.setf( ios::hex );
1
GokYak
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 20
28.09.2016, 20:00  [ТС] #6
При выполнении программа почему-то присваивает nArg1 = 0x4660 вместо 0x1234 и nArg2 = 0x255 вместо 0x00ff, соответственно все остальные вычисления с этими аргументами дают другие ответы. Ошибку можно заметить запустив программу после компиляции.

Добавлено через 20 часов 39 минут
Огромное спасибо ZSS за подсказку. Я оказался невнимательным сперва.

Добавлено через 20 минут
Cygwin ругается при компиляции на основную функцию. Пишет:
Bash
1
2
3
4
$ g++ BitTest.cpp
BitTest.cpp:7:5: предупреждение: второй аргумент функции «int main(int, char** (*)())» должен иметь тип «char **» [-Wmain]
 int main (int nArg,  char ** pszArgs())
     ^
А в NetBeans все получилось.
0
nmcf
6271 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
28.09.2016, 21:04 #7
Лучший ответ Сообщение было отмечено GokYak как решение

Решение

Там не нужны скобки.
1
28.09.2016, 21:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2016, 21:04

Функция для побитовых значений
Функция должна изменять первое левое значение на 0 или 1 . Если allocated...

Первая программа. Код не компилируется и не запускается программа.
Первая программа, первая ошибка Здравствуйте! Решил учить С++. Скачал книгу...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru