以下条件的行为是什么:
if (VALUE & 0xFF00) {
// execute code
}
VALUE
应该等于0xFF00
还是0xF000
等导致执行条件体的正面结果?
答案 0 :(得分:1)
表达式测试{8}的第8位 - 第15位中的一位或多位是VALUE
。
如果1
是VALUE
,0x8000
,0x4000
,0x2000
,0x1000
,0x0800
,{{}之一1}}或0x0400
,条件为真。
还有许多其他0x0200
可以使条件成立,例如0x0100
,VALUE
,0x1234
,0xC000
,{{1} },0xF000
和0x0300
。
如果0xBEEF
为0x0180
,则条件为false。
答案 1 :(得分:1)
在16位整数值的范围内,0x0100和0xFFFF之间的任何值都将导致正在执行False
的正文。 0x0000和0x00FF之间的值没有设置任何位8到15,因此条件的计算结果为false,并且不执行代码块。
对于较大的数字,任何值True
使select countryname,eval('sum / _count') as average_lat,eval('sum2 / _count') as average_lng from
(select countryname,sum(_lat),sum(_lng),count(*) as _count from
(select outE("livesIn").lat as _lat,outE("livesIn").lng as _lng,out("livesIn").countryname as countryname from
(select expand(out("Follows")) from Account where name="Alice") unwind _lat,_lng,countryname)
group by countryname order by _count desc limit 1)
的余数在0x0100..0xFFFF范围内,将导致正在执行if
的正文。
基本上,如果设置了位置8-15中的至少一个位,则代码将被执行。
请注意,代码被视为条件已写入:
v
实际上,任何表达式v % 65536
都被视为为任何简单类型的变量写成if
:整数,浮点数,指针。
答案 2 :(得分:1)
如果VALUE
中与0xFF00
中的设置位对应的位中的任何位也设置,则条件的计算结果为true
。
如果要检查左操作数的所有相应位是否设置为右操作数,则应编写
if ( ( VALUE & 0xFF00 ) == 0xFF00 ) {
// execute code
}
答案 3 :(得分:0)
只要表达式VALUE & 0xFF00
的计算结果为非零,if语句的正文就会执行。