gpt4 book ai didi

c - 一行中的两个等号?

转载 作者:太空狗 更新时间:2023-10-29 16:30:09 26 4
gpt4 key购买 nike

有人可以解释一下这是做什么的以及它为什么是合法的 C 代码吗?我在这段代码中找到了这一行:http://code.google.com/p/compression-code/downloads/list , 这是 Adaptive Huffman Coding 的 Vitter 算法的 C 实现

ArcChar = ArcBit = 0;

来自函数:

void arc_put1 (unsigned bit)
{
ArcChar <<= 1;

if( bit )
ArcChar |= 1;

if( ++ArcBit < 8 )
return;

putc (ArcChar, Out);
ArcChar = ArcBit = 0;
}

ArcChar 是一个int,ArcBit 是一个unsigned char

最佳答案

表达式 (a = b) 的值是 b 的值,所以你可以这样链接它们。它们也是右结合的,所以一切顺利。

本质上

ArcChar = ArcBit = 0;

与(大约1)相同

ArcBit = 0;
ArcChar = 0;

因为第一个赋值的值是分配的值,因此 0

关于类型,即使 ArcBit 是一个 unsigned char,赋值的结果也会扩展为 int


1 不过,这并不完全相同,正如 R.. 在下面的评论中指出的那样。

关于c - 一行中的两个等号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7244114/

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