Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2011, 18:58   #1
gas777
Пользователь
 
Регистрация: 10.05.2011
Сообщений: 12
По умолчанию Что делает цик for в этой программе ?

#include<iostream>
#include<cstring>
using namespace std;
union Death
{
unsigned long A;
char a[4];
};
int main (void)
{
Death Mega;
short i;
char t = 0;
cout << "enter number" << endl;
cin >> Mega.A;
cout << Mega.A << endl << hex << Mega.A << endl;
for(i=31;i>=0;i--)
cout<<(Mega.A>>i&1);
cout<<endl;

t=Mega.a[0];
Mega.a[0] = Mega.a[1];
Mega.a[1] = t;
t=Mega.a[2];
Mega.a[2] = Mega.a[3];
Mega.a[3] = t;
cout << Mega.A << endl << dec << Mega.A << endl;
for(i=31; i>=0; i--)
cout << (Mega.A>>i&1);
}
gas777 вне форума Ответить с цитированием
Старый 23.06.2011, 19:15   #2
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

выводит значение Mega.A в двоичном виде на экран
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 23.06.2011, 19:25   #3
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
выводит значение Mega.A в двоичном виде на экран
Не совсем так! Скорее выводит число которое получилось в результате сдвига в право на i&1 бит!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 23.06.2011, 19:25   #4
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от gas777 Посмотреть сообщение
for(i=31;i>=0;i--)
cout<<(Mega.A>>i&1);
cout<<endl;
32 раза выполнятся цикл. Побитовый сдвиг вправо Mega.A на i бит. Потом побитовая конъюнкция с единицей. И вывод этого на экран.
И перевод строки 1 раз.

Последний раз редактировалось An1ka; 23.06.2011 в 19:29.
An1ka вне форума Ответить с цитированием
Старый 23.06.2011, 20:06   #5
gas777
Пользователь
 
Регистрация: 10.05.2011
Сообщений: 12
По умолчанию

t=Mega.a[0];
Mega.a[0] = Mega.a[1];
Mega.a[1] = t;
t=Mega.a[2];
Mega.a[2] = Mega.a[3];
Mega.a[3] = t;

а это что делает?
gas777 вне форума Ответить с цитированием
Старый 23.06.2011, 20:33   #6
gas777
Пользователь
 
Регистрация: 10.05.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
Не совсем так! Скорее выводит число которое получилось в результате сдвига в право на i&1 бит!
t=Mega.a[0];
Mega.a[0] = Mega.a[1];
Mega.a[1] = t;
t=Mega.a[2];
Mega.a[2] = Mega.a[3];
Mega.a[3] = t;
а это что делает?
gas777 вне форума Ответить с цитированием
Старый 23.06.2011, 21:17   #7
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

меняет значения в строке а!
первый символ со вторым! А третий с четвёртым!
Вот!
Но это не главное! Суть в том, что когда мы меняем значения
unsigned long A; У нас автоматически(повторяю автоматически) меняется содержание char a[4]; И наоборот! Так как они оба лежат в union Death!
А всех значений, которые которые распологаются в юнионе, адрес начала их расположения в оперативке совпадает! То есть они накладываются друг на друга! Отсюда такая вещь - меняешь одно поле меняются остальные!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
блок схема к этой программе emin313gs Помощь студентам 1 10.10.2010 17:35
Где в этой программе ошибка: Оля_1991 Помощь студентам 4 04.10.2010 12:20
Печать. Что делает MS и не делает Delphi Влад12 Общие вопросы Delphi 8 05.05.2010 20:04
Помогите нарисовать блок-схему к этой программе C-Jay Общие вопросы C/C++ 3 30.12.2009 16:21
подскажите, что в этой программе не так?? мария2507 Microsoft Office Excel 3 22.12.2009 16:30