XamBEE Ответов: 3

Что означает оператор|=?


что означает этот оператор(|=)
используется в следующем примере кода
id |= static_cast<quint32>(static_cast<quint8>(data[0] & 0x1F) << 24)


пожалуйста, объясните эту строку кода. если можно..

Что я уже пробовал:

Мне нужно знать об операторе, которым я никогда раньше не пользовался.

Richard MacCutchan

Вы можете легко найти ответ, прочитав свой справочник по C++.

3 Ответов

Рейтинг:
28

Dave Kreskowiak

В следующий раз попробуйте поискать ответ в Гугле. Это очень просто. Вы просто гуглите "оператор C++|=". Начать читать.

В данном случае это два оператора в одном. Это побитовая операция или в сочетании с присваиванием, например:

C |= 2

это то же самое, что
C = C | 2


В вашем примере эквивилентный код будет выглядеть следующим образом:
frame2send.id = frame2send.id | (data[0] & 0xff) << 24;


XamBEE

спасибо

Рейтинг:
1

0x01AA

Давайте начнем с более простого примера, потому что свойства не всегда поддерживают этот синтаксис.

byte theValue= 0;

theValue|= 0x01;

означает то же самое, что:
theValue= theValue | 0x01;

Остающийся вопрос заключается в том, что означает оператор "|" :

Это означает бит-Уиз "или" из двух аргументов.
Теперь вопрос в том, что означает " немного мудрый или":
0 или 0 - это 0
0 или 1 равно 1
1 или 0 1
1 или 1 - это 1
Возможно, вы можете видеть в приведенной выше таблице, что как только один из аргументов равен "1", результат равен "1".

Теперь я предполагаю, что вы знаете, что байт равен 8 битам, на случай, если не спросите у Google больше.
Arg1       : 0000 0000
Arg2       : 0000 0001
Arg1 | Arg2: 0000 0001
и так далее
Чтобы погрузиться в это более глубоко спросите Google:
Побитовые операции в C-Википедии, свободной энциклопедии[^]


Рейтинг:
1

Patrice T

Это то же самое для каждого оператора присваивания. Этот

id |= something;

означает
id = id | something;


C Операторы[^] посмотрите на операторы присваивания

Вы должны отточить свои знания основ C/C++
Язык программирования Си - Википедия, свободная энциклопедия[^]
https://hassanolity.files.wordpress.com/2013/11/the_c_programming_language_2.pdf[^]
http://www.ime.usp.br/~ПФ/Керниган-Ритчи/с-Программирование-электронные книги.формат PDF[^]


0x01AA

А 5. я предполагаю, что "4" было для каких-то странных проблем форматирования ;)
Бруно

Patrice T

Спасибо.
Я не вижу "4", но исправил некоторые проблемы с форматированием.