gpt4 book ai didi

c# - 一行中的多个分配

转载 作者:太空宇宙 更新时间:2023-11-03 20:50:32 25 4
gpt4 key购买 nike

我接到了一个任务,要在 NodeJs 中重写 C# 代码。不幸的是,该函数中有一些我不完全理解的令人讨厌的单行代码。

代码

int b, sign = ((b = byteBuffer.ReadByte()) >> 6) & 1, i = b & 0x3F, offset = 6;

问题

我可以看到有多个赋值,但我不确定这些变量应该具有什么值。

有人可以解释这个单行代码和/或将其重写成更易于理解的 C# 代码片段吗?

最佳答案

基本上是一样的

int b = byteBuffer.ReadByte();
int sign = (b >> 6) & 1;
int i = b & 0x3F;
int offset = 6;

详细说明:

在原始行中,每个顶级, 拆分声明:

int b, sign = ((b = byteBuffer.ReadByte()) >> 6) & 1, i = b & 0x3F, offset = 6;
^here ^here ^ here

然后你会遇到一个棘手的问题:

int b;
int sign = ((b = byteBuffer.ReadByte()) >> 6) & 1;
// ...

实际上首先将 B 定义为没有初始值,但是下一个表达式立即将 'ReadByte' 的结果分配给 B 作为第一个子操作,所以实际上它与从中初始化 B 相同开始,你最终得到我在第一个代码片段中写的内容。

关于c# - 一行中的多个分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55819730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com