C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 它如何工作“检查位标志”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经阅读了有关此问题的其他问题,但他们没有回答我的问题.

在下面的代码中我理解它检查该位是否已设置,但我的问题是为什么?

@H_450_9@bool test(uint8_t& flag) { return flag & (1 << 4); }

我不明白为什么它返回一个bool并且它有效,flag是uint8_t和1<< 4应该是这样的00010000(我想).为什么该代码返回所需单个位的值而不是最右边的那个或类似的东西?

解决方法

C++ draft standard部分4.12布尔转换说(强调我的):

因此任何非零值都将转换为true.

你对1<<< 1< 1< 1< 1的结果表示怀疑. 4我们有一个快速方法来检查使用std::bitset

@H_450_9@#include <bitset> #include <iostream> int main() { std::bitset<8> b1(1<<4); std::cout << b1 << std::endl ; return 0; }

并且我们可以看到结果确实是00010000,因为如果两个操作数中的位都是1,则bitwise and仅将位设置为1,然后是flag&的结果.如果flag的bit 5也是1,则(1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

大佬总结

以上是大佬教程为你收集整理的c – 它如何工作“检查位标志”全部内容,希望文章能够帮你解决c – 它如何工作“检查位标志”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。