有人能解释一下这是什么,它是如何合法的C代码吗?我在这段代码中找到了这一行:http://code.google.com/p/compression-code/downloads/list,它是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;
因为第一个assignment的值是赋值,所以
0
。关于类型,即使
ArcBit
是一个unsigned char
赋值的结果也会变宽到int
。不过,它与r.并不完全相同。在下面的评论中指出。