gpt4 book ai didi

PHP函数标志,怎么样?

转载 作者:IT王子 更新时间:2023-10-29 00:12:01 26 4
gpt4 key购买 nike

我正在尝试创建一个以标志作为参数的函数,但输出总是与预期的不同:

define("FLAG_A", 1);  
define("FLAG_B", 4);
define("FLAG_C", 7);
function test_flags($flags) {
if($flags & FLAG_A) echo "A";
if($flags & FLAG_B) echo "B";
if($flags & FLAG_C) echo "C";
}
test_flags(FLAG_B | FLAG_C); # Output is always ABC, not BC

我该如何解决这个问题?

最佳答案

标志必须是 2 的幂才能正确按位或组合在一起。

define("FLAG_A", 0x1);
define("FLAG_B", 0x2);
define("FLAG_C", 0x4);
function test_flags($flags) {
if ($flags & FLAG_A) echo "A";
if ($flags & FLAG_B) echo "B";
if ($flags & FLAG_C) echo "C";
}
test_flags(FLAG_B | FLAG_C); # Now the output will be BC

对常量值使用十六进制表示法对程序的行为没有影响,但这是一种向程序员强调值组成 bit field 的惯用方式。 .另一种方法是使用类次:1<<0 , 1<<1 , 1<<2 , &c.

关于PHP函数标志,怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3589573/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com