Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Вопрос


Автор: mi49.Ok 20.1.2004, 11:23
Привет, обитатели!
Поясните кто-нибудь, что значит &0x7fff в выражении rand()&0x7fff.
И ещё вопросик:
У меня есть enum:
enum alp
{
A,
B,
C,
D,
E,
F,
G,
};
Как мне узнать какое кол - во енумиков smile.gif (A,B,C,D) у меня в енуме?
P.S.
Где можно найти информацию на русском языке о том, как работать с буфером кадра. Нужна очень подробная информация.

Автор: Unregistered 20.1.2004, 12:17
1. and()&0x7fff - это выполнение побитового и между тем что вернула rand и шеснадцатирричнімм числом 0x7fff

Автор: mi49.Ok 20.1.2004, 12:28
Понятно, а на остальные вопросы ответы знаете?

Автор: bel_nikita 20.1.2004, 12:34
Цитата
Поясните кто-нибудь, что значит &0x7fff в выражении rand()&0x7fff

накладывается маска, т.е. значение rand()&0x7fff должно быть в интервале 0...32767 деков
Цитата
Как мне узнать какое кол - во енумиков  (A,B,C,D) у меня в енуме?

введи последнее значение типа END_ENUM, и сможешь узнать сколько у тебя енумиков wink.gif

Автор: mi49.Ok 20.1.2004, 16:35
Цитата
накладывается маска, т.е. значение rand()&0x7fff должно быть в интервале 0...32767 деков

А что такое деки?

Автор: mi49.Ok 20.1.2004, 16:37
Цитата

введи последнее значение типа END_ENUM, и сможешь узнать сколько у тебя енумиков

Куда что ввести, я не понял них[bepp]я.

Автор: bel_nikita 20.1.2004, 18:38
деки в смысле десятичной системе исчисления wink.gif

т.е. строка rand()&0x7fff будет генерить случайные числа в диапазоне 0....32767 (0h...7FFFh)

Код
enum TempEnum{
/*00*/ ENUM_A
/*01*/,ENUM_B
/*02*/,ENUM_C
/*03*/,ENUM_D
/*04*/,END_ENUM
};
...
printf("\nKol-vo elements=%d",END_ENUM);  // =4
...

Автор: RAN 20.1.2004, 18:48
Модератор: Пожалуйста, один топик - один вопрос. Название темы должно отражать её суть. Прочитайте правила форума.

Автор: mi49.Ok 21.1.2004, 07:05
Я правила знаю. но было бы безсмысленно создавать тр маленьких вопроса, тем самым засоряя "эфир".

Автор: RAN 21.1.2004, 08:28
Модератор: mi49.Okэто не чат, а форум. Одна из задач форума, помочь не только Вам, но и всем тем, у кого возникли такие же вопросы. Тема обсуждения должна быть отражена в заголовке. Кроме, того правила не обсуждаются, а исполняются.

P.S. На этот топик отвечать НЕ НАДО. Надо просто принять к сведению.

Автор: Peter 21.1.2004, 15:27
Тема не закрыта - отвечаю на вопрос про enum.
Насколько я понял, enum пишется для того, чтобы заменить коротким выражением кучу define'ов. Так что узнать количество пунктов в enum, по-моему, невозможно.

Автор: mi49.Ok 22.1.2004, 10:42
2 Peter:
А жаль...sad.gif.
2 bel_nikita:
я спрашиваю: "Сколько енумиков?", потому что не знаю сколько их будет на момент запуска программы. Т.е. мне надо устроить цикл по всем енумикам. Я не знаю значения послед. енума.

Автор: __vi 22.1.2004, 12:39
Как это ты не знаешconfused.gif С этого не позволяет.
И вообше тебе наверное нужен масив.

Автор: mr.DUDA 22.1.2004, 12:39
Цитата
я спрашиваю: "Сколько енумиков?", потому что не знаю сколько их будет на момент запуска программы. Т.е. мне надо устроить цикл по всем енумикам. Я не знаю значения послед. енума.

Вместе с enum используй массив:
Цитата
enum alp {A, B, C, D, E, F, G, H};
int alp_arr = {A, B, C, D, E, F, G, H};

// тогда кол-во элементов в enum-е можно посчитать:
int num = sizeof(alp_arr)/sizeof(int);

Способа узнать кол-во элементов в enum-е в С++ не существует (в C# он есть).

Автор: mi49.Ok 22.1.2004, 14:51
Цитата

Способа узнать кол-во элементов в enum-е в С++ не существует (в C# он есть).

Вот так бы стразу smile.gif.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)