Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 39 из 87<  1 ... 36  37  38  39  40  41  42 ... 87  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 24.12.2005
Daemon писал(а):
кто скажет, какие в этом коде недостатки
Насколько я помню, это преобразование создаёт временную переменную (вызывается конструктор копирования класса clA), ссылка на которую присваивается a. Т.е. результат не будет отличаться от простого копирования без ссылки:
Код:
clA a = static_cast<clA>(b);
Хотя это стоит проверить.



Партнер
 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Билли Бонс писал(а):
Насколько я помню, это преобразование создаёт временную переменную (вызывается конструктор копирования класса clA), ссылка на которую присваивается a. Т.е. результат не будет отличаться от простого копирования без ссылки:
Верно, стоило лишь пропустить символ :)

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 14.09.2006
Откуда: Харьков
народ подскажите функцию для работы мышки в консоли!!!Функция нужна для реализайии кнопки???Помогите!!!Можно советы по реализации кнопки???


 

Member
Статус: Не в сети
Регистрация: 06.09.2005
Откуда: Москва
Prey2006, это никак не относится к ANSI C и ANSI C++


 

Member
Статус: Не в сети
Регистрация: 14.09.2006
Откуда: Харьков
а при чем здесь ANSI прсто есть задние реализовать кнопку в консоли!!!!!!!!!!Помогите???


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Prey2006 писал(а):
а при чем здесь ANSI прсто есть задние реализовать кнопку в консоли!!!!!!!!!!Помогите???
Какую еще кнопку в консоли?

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 15.11.2003
Откуда: Moscow\Russia
Привет всем! Кто знает как получить доступ к биту?
Ну например есть у меня переменная
char i = 'a';
она занимает 1 байт, т.е. у ней внутри 8 бит, как мне эти биты изменять?


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
Код:
#define SETBIT(ADRESS,BIT) (ADRESS |= (1<<BIT) )
#define CHECKBIT(ADRESS,BIT) (ADRESS & (1<<BIT))
#define CLRBIT(ADRESS,BIT) (ADRESS &=~(1<<BIT))
#define TOGLEBIT(ADRESS,BIT) (ADRESS ^= (1<<BIT))

Использовать примерно так:
Код:
char i = 'a';
SETBIT(i,3);
if(CHECKBIT(i,3))...


зы: Важно понять как это работает. После этого можно спокойно одновременно проверять/изменять много бит одновременно.


Последний раз редактировалось mein 28.05.2007 0:24, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 15.11.2003
Откуда: Moscow\Russia
хм, спасибо попробую разобраться...

появились такие вопросы:
1. Что в С++ означает тильда?
2. Не понятно, что делает макрос TOGLEBIT
Добавлено спустя 7 минут, 4 секунды
3. будут ли эти макросы работать если будет не однобайтовый char переменная, а допустим двухбайтовый int


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
M9IC писал(а):
1. Что в С++ означает тильда?

А по логике не догадываетесь? :) . Инвертирование. Сначала сдвигается единица влево на нужное расстояние, потом это всё инвертируется и логически исходное число умножается на полученное выражение. Таким образом измениться(обнулиться) может только запрошенный бит.
M9IC писал(а):
2. Не понятно, что делает макрос TOGLEBIT

Ну тут наверное закралась ошибка в перевод :D - переключение бита(либо из 0 в 1, либо из 1 в 0).
M9IC писал(а):
3. будут ли эти макросы работать если будет не однобайтовый char переменная, а допустим двухбайтовый int

Конечно будут. Для корректной работы достаточно не выходить за размеры переменной. Кстати, int далеко не везде двухбайтовый ;) .


 

Member
Статус: Не в сети
Регистрация: 15.11.2003
Откуда: Moscow\Russia
Блин, чегото у меня не работает
код

Код:
         int i,j;
   CString bit, temp;
   ................................
         чето делаем
         ................................
      
         if(CHECKBIT(temp[i],j)){
            if(bit[0] == '1') CLRBIT(temp[i],j);
            else SETBIT(temp[i],j);
         }else{
            if(bit[0] == '0') CLRBIT(temp[i],j);
            else SETBIT(temp[i],j);
   ................................
         чето делаем
         ................................



там где CLRBIT и SETBIT ругается и пишет "&= :left operand must be l-value " "
|= :left operand must be l-value "

блин че не нравится то помогите


 

M9IC Ага. Вы уважаемый не в ту ветку попали. Тут чистый С или С++ обсуждать надо. CString - это кусок MFC, т.е. - MS Visual C++.

Но если по теме - CString - это класс. Квадратные скобки - перегруженный оператор. Он аналогичен вызову GetAt(index).
У вас выходит temp.GetAt(i) |= (1<<BIT); Если хотите макросами пользоваться - не пользуйтесь классами, возьмите обычную строку.


 

Member
Статус: Не в сети
Регистрация: 15.11.2003
Откуда: Moscow\Russia
Нутк, я уж начал здесь спрашивать не лезть же мне в другую ветку, непонятно что и как тогда будет, а тут из 3х последних постов все понятно

А разве обычную строку можно с контролами на форме связать, например с Edit? я пытался что-то никак, или плохо пытался?


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
M9IC Эти макросы применять совместно с CString'ом не нормально. Они не для этого :) . Если через Get/SetAt то, к примеру, CLRBIT можно заменить на это:
Код:
int i,j;
CString bit;
bit.SetAt(i,bit.GetAt(i) & (~(1<<j)) );

Ещё можно воспользоваться функцией GetBuffer :
Код:
int i,j;
CString bit;
...
char *str = bit.GetBuffer();
...
CLRBIT(str[i],j);
...
bit.ReleaseBuffer();

В последнем варианте изменять длинну вверх по указателю str не стоит :) .

M9IC писал(а):
А разве обычную строку можно с контролами на форме связать, например с Edit? я пытался что-то никак, или плохо пытался?

А можно ничего и не связывать ;) . Я почти всегда использую GetWindowText вместо dde .


 

Прошу, подскажите тормозу, как сделать в Билдере 6-том, чтоб надатие клавиш A, S, D, F на клаве надимало 4 кнопки на форме, и каждое нажатие увеличивало переменную, и меняло один из 4-х объектов Lable (1.. 2.. 3..)
Надо как-то сделать ручной счетчик на 4 типа объектов.
Если кто подскажет - ну тоже постараюсь отблагодарить - ато резко понадобилось, а я С++ уже года два не открывал - все блин забыл - ПОЖАЛУЙСТА ПАМАГИТЕ!


 

Member
Статус: Не в сети
Регистрация: 15.06.2007
Откуда: Одесса
Пытаюсь уже два дня вникнуть в перезагрузку функций, но никак не могу понять одну строчку))
Код:
long max_element(int n, int array[])
// Функция для массивов с элементами типа int.
{
   int value = array[0];     
   for (int i = 1; i < n; i++)   
      value = value > array [i] ? value : array [i] ;
   cout << "\nFor (int)    : ";
   return long(value);
}

Расшифруйте мне пожалуйста подробно, что это за строчка, а точнее зачем там знак вопроса и двоеточие (нигде этого не учила)
value = value > array [i] ? value : array [i]
Что-то вроде: оператор валуе равен валуе, который больше числа [i] массива аррей, а дальше ничего не ясно :(

_________________
Ув. модераторы. Прежде, чем наказывать меня за что-то, - посоветуйтесь со мной. Я вам запрещу ;)


 

Member
Статус: Не в сети
Регистрация: 07.10.2003
Откуда: Russia, Moscow
это не перегрузка функций, это условный переход (иф)
value = ( value > array [i] ? value : array [i] )
первое - условие, второе - подставляется при истине, третье при лжи.
вопрос и двоеточие - разделители.
то же самое:
if (value>array[i]) value=value; else value=array[i];

_________________
В поиске включайте "Искать все слова". Избегайте многоточий.
Зачем нужен разгон? http://tsc.overclockers.ru


 

Member
Статус: Не в сети
Регистрация: 15.06.2007
Откуда: Одесса
armadillo
Ага, понятно) благодарю :)

_________________
Ув. модераторы. Прежде, чем наказывать меня за что-то, - посоветуйтесь со мной. Я вам запрещу ;)


 

Advanced member
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
О-ла-ла
О ля ля...
Условный оператор ? : , кто ж тебе хелпик не поставил-то на компьютер?

И читать надо так :
переменной value будет присвоено значение value в случае, если value > array [i] истинно, иначе переменной value присваивается значение array [i]
Добавлено спустя 1 минуту, 39 секунд
Опаньки, опоздал.... Совсем старый стал.... А какой девушка красивый был, эх


 

Member
Статус: Не в сети
Регистрация: 15.06.2007
Откуда: Одесса
zauropod
У меня столько книг и хелпиков... только не смогла найти ничего похожего) а на форуме есть очень добрые гуру, которые всегда расскажут лучше, чем любой хелп **косицца на zauropod и armadillo**

_________________
Ув. модераторы. Прежде, чем наказывать меня за что-то, - посоветуйтесь со мной. Я вам запрещу ;)


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 39 из 87<  1 ... 36  37  38  39  40  41  42 ... 87  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan