c++ - '&' 在 C/C++ 中的作用是什么?它在 perl 中的等效运算符是什么?

标签 c++ c perl

我正在编写一个协议(protocol)的 perl 实现,其规范是针对 C/C++ 给出的,但我不太了解 C。

条件 if ((flags & 0x400) != 0) 是什么意思?我如何在 perl 中做到这一点?

if ($flags == "\x400") 是否正确?

最佳答案

& 是按位与。参见 Bitwise operators .

因此 flags 被视为一系列位,然后您将它与具有您要检查的位集的内容进行 AND 运算。如果结果非零,则该位已设置,否则您正在查看的位未设置。特别是,在您的示例中,0x400 = 0100 0000 0000 用于检查 flags 中的第 11 位是否设置(为 1)。

通常,您不会使用 0x400,而是使用命名常量,因此该位代表什么很清楚。

所以 if ($flags == "\x400") 不正确。参见 Working with bits in Perl .

可以在 Linux file permissions 中看到一个常见的位掩码示例.

关于c++ - '&' 在 C/C++ 中的作用是什么?它在 perl 中的等效运算符是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7104342/

相关文章:

c++ - 文件中模板类的静态数据成员的初始化顺序是什么?

java - Java 方法是否存储值的副本?

regex - Perl 正则表达式匹配字符串不以某物结尾

perl - sed 相当于 perl -pe

c - 如何在其自己的 SIGCHLD 处理程序中获取设置进程的 PID?

java - 如何在 Perl 中动态构建 Java 类路径?

c++ - 类型特征以获取 std::array 或 C 风格数组的元素类型

java - 是否可以用三种编程语言编写一个程序?

c++ - 选择排序程序显示异常结果

c - 从 ANSI C 中的字符串中获取特定行