gpt4 book ai didi

c - C 中的行很奇怪

转载 作者:行者123 更新时间:2023-11-30 15:33:27 27 4
gpt4 key购买 nike

我从 OpenSubtitles 网站上看到了这行代码。它使用一个简单的(如果我们排除这一行)算法从电影中生成哈希值。

代码行是这样的:

for(uint64_t tmp = 0, i = 0; i < 65536/sizeof(tmp) && fread((char*)&tmp, sizeof(tmp), 1, handle); hash += tmp, i++);

不知道...所有的操作都发生在 for 中,而不是我这些年来熟悉的格式...

for (x=0; x<=5; x++)
{/*do something here*/}

谁能解释一下这里发生了什么?

最佳答案

这样写可能会更容易理解:

for(
uint64_t tmp = 0, i = 0;
i < 65536/sizeof(tmp) && fread((char*)&tmp, sizeof(tmp), 1, handle);
hash += tmp, i++)
{
}

它声明两个变量,在每次迭代时修改两个变量(尽管不是相同的两个),并在继续条件下进行函数调用。这是表达这一点的更简洁的方式:

uint64_t tmp = 0;
uint64_t i = 0;
size_t res;
while (1)
{
if (i >= 65536/sizeof(tmp))
break;
res = fread((char*)&tmp, sizeof(tmp), 1, handle);
if (!res)
break;
hash += tmp;
++i;
}

关于c - C 中的行很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23691254/

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