在Javascript中进行以下比较:
public async Task Action(...)
{
string content = await response.Content.ReadAsStringAsync();
cache.Set("responselist", content, policy);
/* ... */
string content = cache["responselist"] as string;
}
为false,因为按位运算符将数字转换为有符号的int32。 (0xf0000000 & 0xf0000000) == 0xf0000000
的结果为负数,&
为正数
有没有办法让它表现得像我希望它在C中表现一样?
答案 0 :(得分:1)
使用XOR运算符并与0进行比较。
(0xf0000000 & 0xf0000000) ^ 0xf0000000 === 0
A ^ B
, 0
将为A === B
。
答案 1 :(得分:1)
Section 12.9.5 of Ecma 262 7.0(ES 2016)定义无符号右移运算符(>>>
)以返回无符号的32位整数。情况就是at least since ES 5。
换句话说,当您移位0时,可以使用此运算符将int32值转换为uint32值。
因此,您只需将表达式更改为
即可(0xf0000000 & 0xf0000000) >>> 0 == 0xf0000000
产生true
。