Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Не могу разобраться в листинге из Шилдта(3 издание) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Преобразование метров в сантиметры http://www.cyberforum.ru/cpp-beginners/thread915278.html
Доброго времени суток, форумчане! Буквально день назад начал обучаться языку C++. Подошёл ко 2-му упражнению и столкнулся с первой проблемой. Очень надеюсь, что вы мне поможете разобраться. ...
C++ Подскажите какой язык нужен Здравствуйте, прошу извинить что немного не по теме пишу тут, просто сам не знаю какой язык мне нужен. Языки программирования мне не знакомы. Решил начать учить один из них, но конкретно какой не... http://www.cyberforum.ru/cpp-beginners/thread915272.html
Классы в C++ Вывести на экран список граждан мужского пола с высшим образованием C++
/* Напишите программу на языке программирования С++, в которой создайте класс с именем PERSON с данными: Фамилия, Имя, Пол, Образование, Год рождения. Класс должен включать методы, реализующие ввод...
C++ программа, которая выводит таблицу степеней двойки от нулевой до десятой
Написать программу, которая выводит таблицу степеней двойки от нулевой до десятой.
C++ Описать что делается в фрагменте кода http://www.cyberforum.ru/cpp-beginners/thread915222.html
Вот собственно фрагмент кода, опишите пожалуйста что он делает bool soglasnaya(char c) { for (int i=0;i<nofsoglas;i++) { if (c==soglas) { return true; } }
C++ Объяснить работу программы по обработке символьных массивов (строк) эта программа выводит на экран слова в которых первая буква встречается хоть один раз,но я не понимаю как она работает помоги пожалуйста очень-очень надо #include <stdio.h> #include <conio.h>... подробнее

Показать сообщение отдельно
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188

Не могу разобраться в листинге из Шилдта(3 издание) - C++

30.06.2013, 19:56. Просмотров 394. Ответов 3
Метки (Все метки)

Прога меняет 2 байта из объединения местами.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Use a union to exchange the bytes within a short integer.
#include <iostream>
using namespace std;
 
void disp_binary(unsigned u);
 
union swap_bytes {
  short int num;
  char ch[2];
};
 
int main()
{
  swap_bytes sb;
  char temp;
 
  sb.num = 15;  // binary: 0000 0000 0000 1111
 
 
  cout << "Original bytes:  ";
  disp_binary(sb.ch[1]);
  cout << "  ";
  disp_binary(sb.ch[0]);
  cout << "\n\n";
 
 
  // exchange the bytes
  temp = sb.ch[0];
  sb.ch[0] = sb.ch[1];
  sb.ch[1] = temp;
 
  cout << "Exchanged bytes: ";
  disp_binary(sb.ch[1]);
  cout << "  ";
  disp_binary(sb.ch[0]);
  cout << "\n\n";
 
  return 0;
}
 
// Display the bits within a byte.
void disp_binary(unsigned u)
{
  register int t;
 
  for(t=128; t>0; t=t/2)
    if(u & t) cout << "1 ";
    else cout << "0 ";
}
Собственно, вопросы следующие:
1)Строчки 20-24. Выводится оригинальная последовательность байт. Почему вывод начинается с 1 элемента массива(он вроде бы как правее), а не нулевого.
2)Строка 47. "(u & t)". Что это за условие такое?
3)Не могу понять функцию disp_binary, вообще принцип ее работы. В качестве параметра задается unsigned. Просто unsigned(без int) воспринимается компилятором как что? Ну и в данной функции unsigned u что из себя представляет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru