使用 OR 运算符赋值
Assignment with OR operator
所以我在Github中阅读源代码时遇到了这段代码。
addr2int = ( (uint32_t)paddr[2] ) | ( (uint32_t)paddr[3] << 8 ) | ( (uint32_t)paddr[4] << 16 ) | ( (uint32_t)paddr[5] << 24 )
有人可以向我解释这里发生了什么吗?
据我所知,这是一个任务,但我不明白为什么有|
运算符,或者这是否是一个多重任务。
(uint32_t)paddr[2] ) | ( (uint32_t)paddr[3] << 8 ) | ( (uint32_t)paddr[4] << 16 ) | ( (uint32_t)paddr[5] << 24 )
-
它基本上是四个整数的按位OR(运算符
|
(。 -
其次,考虑一下:
(uint32_t)paddr[2]
.在这里,我们告诉编译器将paddr[2]
内部的任何内容转换为unsigned long int
,其中uint32_t
是c ++ 11 std。尽管如此,(uint32_t)variable
是C型铸件。在现代 C++11 中,您可以将其写为static_cast<uint32_t>paddr[2]
. -
第三,
variable_x << variable_y
是按位左移。通过示例在此处阅读有关它的更多信息。
相关文章:
- 重载Singly Linked List中的赋值运算符
- 使用赋值运算符重载从类中返回jobject
- 标准库类型的赋值运算符的引用限定符
- 复制构造函数、赋值运算符C++
- 标准::变体的赋值运算符
- 移动赋值运算符;尝试引用已删除的函数.我该如何解决这个问题?
- 基类和派生类的多态赋值运算符
- 为用户定义的类正确调用复制构造函数/赋值运算符
- CRTP 中的复制赋值运算符 - gcc vs clang 和 msvc
- 为什么初始化时没有调用重载赋值运算符?
- 赋值运算符重载和自赋值
- C++矢量复制构造函数和赋值运算符是否也复制保留空间?
- Qt PL/SQL - 赋值运算符 - 字符串缓冲区太小
- 对 r 值使用移动赋值运算符时的异常
- 由于没有使用赋值运算符,映射的值是如何初始化的?
- 默认赋值运算符如何在实际 STL 中实现
- 使用赋值运算符复制 std::vector
- C++ 通过自定义赋值运算符隐式转换函数参数
- 赋值运算符的奇怪行为
- C++赋值运算符,我们可以用 copy 替换它吗?