c# - C#按位否定!检查等价物
问题描述
给定以下 C++ 代码:
void Check(DWORD64 ptr)
{
if ( ! (ptr & 0x8000000000000000) )
return;
}
在 C# 中,这会导致以下错误:
CS0023 运算符“!” 不能应用于“ulong”类型的操作数
如何按位检查 C# 中的 ptr 参数?
比较不为0?
void Check(ulong ptr)
{
if ((ptr & 0x8000000000000000) != 0)
return;
}
或检查0?
void Check(ulong ptr)
{
if ((ptr & 0x8000000000000000) == 0)
return;
}
谷歌搜索这个问题会导致各种不同的按位运算的答案,但我找不到这个带有感叹号的特定否定的答案。
解决方案
当运算符!
“逻辑非”应用于 C 或 C++ 中的数值时,它会产生如下结果:
1
如果它的操作数为零0
否则
C 的条件语句if
解释0
为“假”,任何非零值,包括1
,都解释为“真”。因此,您的第二个选项是正确的。
推荐阅读
- aws-lambda - 从冷启动的角度来看,我们是在同一个文件中编写处理程序还是在 AWS Lambda 的多个文件中编写处理程序是否重要?
- deep-learning - 时间序列模型参数问题
- python - 是否有“虚拟”numpy 数组?
- python - 有没有一种方法可以预测多个商店中多种产品的销售额?
- c# - 在 C# 中,当您想将 UI 与其他逻辑分离时,使用 BackgroundWorker 是否正确?
- java - 在 Android Wear 上阅读每日步数
- reactjs - 如何在 React 中显示来自状态的数据?
- dataframe - 在 RDD、Dataframe、Dataset 中哪个更好用于在 spark 中进行 avro 列操作?
- hdfs - Cloudera - DnsResolutionMonitor throttling_logger 错误
- mysql - 使用 Ngx-translate 从数据库(Mysql)获取翻译