c++ - 如何将 bool 值类型转换为 C 中的位字段

标签 c++ type-conversion bit-fields

我正在使用 cpp 对 AVR 微 Controller 进行编程。
我的问题是:

  • 我的位域结构有 2 个成员,每个成员 1 位。
  • bool 变量的简单结构。

将 bool 结构成员的值传递给位域成员时,是否需要将 bool 变量类型转换为位域成员?
这种转换是否会导致警告,因为两者都是 1 位变量?

最佳答案

假设您的两个 bool 值是 workIsFinishedcustomerIsInsane,等效的位字段是 doneWorkingmadUser .

您可以简单地执行以下操作:

doneWorking = workIsFinished ? 1 : 0;
madUser = customerIsInsane ? 1 : 0;

无需担心类型转换或任何其他东西。任何称职的编译器都能够非常彻底地优化它。

关于c++ - 如何将 bool 值类型转换为 C 中的位字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22144678/

相关文章:

c++ - 位域如何与 C++ 中的位填充相互作用

c - 位域中的枚举 - ANSI C

c++ - 在c++上是否有替代的或链接的hashmap版本?

powershell - 将字符串转换为时间跨度

c# - 将引用基元转换为泛型类型

c++ - 在 C++ 中,在库之间进行相似类转换的最佳方法是什么?

位字段只能是结构/union 的字段,而不是 "normal"、 "stand-alone"变量吗?

c++ - 在Linux上使用QT,有没有办法禁用 "Always on Top"?

c++ - 将 zlib 与 Visual C++ CLR Windows 窗体应用程序一起使用

c++ - 在 Boost::bimap 中使用指针