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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Преобразование метров в сантиметры http://www.cyberforum.ru/cpp-beginners/thread915278.html
Доброго времени суток, форумчане! Буквально день назад начал обучаться языку C++. Подошёл ко 2-му упражнению и столкнулся с первой проблемой. Очень надеюсь, что вы мне поможете разобраться. Само задание: "Напишите программу для преобразования метров в сантиметры. Организуйте ввод числа метров и вывод на экран соответствующего числа сантиметров. Повторяйте эту процедуру до тех пор, пока...
C++ Подскажите какой язык нужен Здравствуйте, прошу извинить что немного не по теме пишу тут, просто сам не знаю какой язык мне нужен. Языки программирования мне не знакомы. Решил начать учить один из них, но конкретно какой не знаю. Дело в том что в будущем мне будет и для самого надо знание программирования для написания небольших программок, вот допустим скоро будет надо написать такое: у меня есть некий файл в excel, в... http://www.cyberforum.ru/cpp-beginners/thread915272.html
Классы в C++ Вывести на экран список граждан мужского пола с высшим образованием C++
/* Напишите программу на языке программирования С++, в которой создайте класс с именем PERSON с данными: Фамилия, Имя, Пол, Образование, Год рождения. Класс должен включать методы, реализующие ввод информации и ее вывод. В программе создайте массив объектов. Разработайте метод класса, с помощью которого выведите на экран список граждан мужского пола с высшим образованием. */ #include...
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> #include <string.h> int main() { const int N=80; int n,i,k,j,m,p,x; p=0; m=0; подробнее

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

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

30.06.2013, 19:56. Просмотров 381. Ответов 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 что из себя представляет?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru