Метценгерштейн 0 22 мая, 2015 Опубликовано 22 мая, 2015 · Жалоба uint8_t tst_mass [1] = {(|= BIT_5)}; как что-то подобное делать? Т.е. чтобы при обращении к данному элементу, происходило или с каким-то числом? Когда буду в ф-ии вызывать данный элемент, он должен не полностью переписать элемент массива, а только бит в этом элементе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 22 мая, 2015 Опубликовано 22 мая, 2015 · Жалоба Можно через union со структурой с битовыми полями. Но лучше, по-моему, (не)прописывать нужные биты явно при обращении. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 22 мая, 2015 Опубликовано 22 мая, 2015 · Жалоба Когда буду в ф-ии вызывать данный элемент, он должен не полностью переписать элемент массива, а только бит в этом элементе. или 1: Использовать BitBanding. или 2: Создать класс, перегрузив в нём оператор =. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CrimsonPig 0 22 мая, 2015 Опубликовано 22 мая, 2015 · Жалоба uint8_t tst_mass [1] = {(|= BIT_5)}; как что-то подобное делать? Т.е. чтобы при обращении к данному элементу, происходило или с каким-то числом? Когда буду в ф-ии вызывать данный элемент, он должен не полностью переписать элемент массива, а только бит в этом элементе. Вы можете сформулировать требование простыми и понятными словами ?. А то мало того, что полная дислексия, так еще и на С. это работает, но непонятно, надо ли это. uint8 arr[2] = {(1<<3), (1<<5)}; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 22 мая, 2015 Опубликовано 22 мая, 2015 · Жалоба uint8_t tst_mass [1] = {(|= BIT_5)}; Т.е. чтобы при обращении к данному элементу, происходило или с каким-то числом? Когда буду в ф-ии вызывать данный элемент, он должен не полностью переписать элемент массива, а только бит в этом элементе. Читайте полностью, и делайте "или". :rolleyes: Да... изучите битовые поля. Они сами делают "или". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Метценгерштейн 0 22 мая, 2015 Опубликовано 22 мая, 2015 · Жалоба есть массив 3-х уровневый. const uint8_t posdigits[6][10][2 * 7] = { { // POS_0 { }, // 0 { }, // 1 { }, // 2 { }, // 3 { }, // 4 { }, // 5 { }, // 6 { }, // 7 { }, // 8 { }, // 9 }, мне надо его заполнить, да так, что последний элемент массива - самые внутренние вложенные скобки- элемент 0- адрес элемента массива, элемент 1- значение. Элемент 2- адрес, 3- значение. например, так {1, 2, 1, 4... }, // 0 т.е. я хочу уже в обрабатываемой ф-ии вызывать элементы массива. И видим, что в номер элемента 1 я сначала пишу 2, потом, вызвав еще раз, в тот же элемент 1 пишу 4. Но мне надо, чтобы не 4, а или 4. Или где-то и 4. Вот как соорудить это? const uint8_t tst_mass [2][2] = { { 0, BIT_2 }, // 0 { 0, BIT_3 }, // 1 }; вот так, но BIT_2 сделать ИЛИ или & Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 22 мая, 2015 Опубликовано 22 мая, 2015 · Жалоба Трудно понять вопрос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 2 июня, 2015 Опубликовано 2 июня, 2015 · Жалоба +1. Вот это предложение можно как-то переписать, чтобы парсер русского языка на нем не спотыкался? Т.е. чтобы при обращении к данному элементу, происходило или с каким-то числом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
psL 0 3 июня, 2015 Опубликовано 3 июня, 2015 · Жалоба +1. Вот это предложение можно как-то переписать, чтобы парсер русского языка на нем не спотыкался? вместо "или" нужно читать "ИЛИ" ) uint8_t tst_mass [1] = {(|= BIT_5)}; как что-то подобное делать? Т.е. чтобы при обращении к данному элементу, происходило или с каким-то числом? Когда буду в ф-ии вызывать данный элемент, он должен не полностью переписать элемент массива, а только бит в этом элементе. Например так: struct proc { int param; int (*do_)(int arg, struct proc* proc ); }; int do_or(int arg, struct proc* proc) { return arg | proc->param; } int do_and(int arg, struct proc* proc) { return arg & proc->param; } int do_proc(int arg, struct proc* proc) { return proc->do_(arg, proc); } struct proc procs[]={ { .param = (1<<5) , do_or }, // 0 { .param = (1<<7) , do_or }, // 1 { .param = (1<<31) , do_and }, // 2 }; ... do_proc(0x12, &procs[1]); // установка бита 7 ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться