C++转C#位与运算作条件遇编译错误,求技术指导
问题解决方法
C++允许数值类型隐式转换为布尔值(非零即true),但C#要求三元运算符的条件必须是显式的bool类型,你需要把位运算的结果和0比较,生成合法的bool条件:
正确的C#代码:
(v & 1UL) != 0UL ? 0x9908B0DFUL : 0x0UL
或者更简洁的写法(0会隐式转换为ulong):
(v & 1UL) != 0 ? 0x9908B0DFUL : 0x0UL
原因说明
原代码中v & 1UL的结果是ulong类型,C#不允许将数值类型直接当作bool使用,必须通过!= 0显式判断该位运算结果是否非零,以此得到合法的bool条件。
内容的提问来源于stack exchange,提问作者user8677843
相关产品推荐
相关产品推荐

