我明白这是一个简单的问题.谁能解释一下下面的"如果"是什么意思? 让我们假设id = 0;

private bool item;

if (item = ((id & 12) == 12))
    ret = 1;
  1. (id & 12)等于(0+12)吗?如果是,则12 == 12变为真.
  2. 这是否判断item是否等于TRUE?

推荐答案

&是按位and运算符.它只保留两个操作数中都为1的那些位.

  • 0 & 0 == 0
  • 0 & 1 == 0
  • 1 & 0 == 0
  • 1 & 1 == 1

二进制中的12是1100,二进制中的0是0000,所以是0 & 12 == 0.

哪一个输入给你12分?设置了位2和3的任何输入,例如1111(15,0xF)、1101(13,0xD)、1110(14,0xE),当然还有1100(12,0xC)本身.但许多其他输入也是可能的,例如11100(28,0x1C)或11101(29,0x1D).

用十六进制记数法编写更加紧凑,并且更容易查看输入是否匹配.十六进制的12等于0xC.任何其他最低有效位为CDEF的十六进制数都将满足您的条件.

请注意,诸如00101 & 1100 == 0100(5)之类的输入将无法通过测试,因为0101 & 1100 == 0100(5&;12==4).

将按位AND的结果赋给item,然后将该结果用作if语句的条件.

Csharp相关问答推荐

MudBlazor—MudDataGrid—默认过滤器定义不允许用户修改基本过滤器

使用C#中的SDK在Microsoft Graph API上使用SubscribedSkus的问题

不带身份的Blazor服务器.Net 8 Cookie身份验证

.NET 6控制台应用程序,RabbitMQ消费不工作时,它的程序文件中的S

使用可信第三方的Iext8.Net pdf签名

在.NET MAUI.NET 8中如何防止按钮点击时出现灰色反馈

当我没有此令牌时,为什么语法报告EOF错误?

带有列表参数的表达式树

BFF到具有AAD/Entra ID B2C的内部API(.NET/ASP.NET核心/标识.Web)

用于ASP.NET核心的最小扩展坞

正在try 将自定义字体添加到我的控制台应用程序

如何消除Visual Studio错误,因为它不识别集合表达式的新C#12语法?

如何在Xamarin.Forms中检索PanGesture事件的位置?

为什么我的UserControl没有加载到我的主窗口中?

反编译源代码时出现奇怪的字符

带有类约束的C#泛型

GMap.NET中的暗模式映射

创建在C++可执行文件中使用的C#DLL

如何在ASP.NET核心Web API项目中允许使用IP地址的CORS?

new()和new class()之间的区别C#