我尝试寻找 Rust 如何实现count_ones()。我很好奇,因为它似乎远远优于我自己的天真的实现(不是开玩笑),而且我真的很想知道为什么它如此高效。我的猜测是 Rust 正在使用一些汇编来完成这项工作。为了完整起见,这是我的尝试:
/*
* my attempt to implement count_ones for i32 types
* but this is much slower than the default
* implementation.
*/
fn count_ones(num: i32) -> u32 {
let mut ans: u32 = 0;
let mut _num = num;
while _num > 0 {
if _num & 0x1 == 0x1 {
ans += 1;
}
_num >>= 1;
}
ans
}
Run Code Online (Sandbox Code Playgroud)
我找到了这个 on the rust repo, but I can't make sense of …
我是 Haskell 的新手,我一直在system为我执行 shell 命令,因为我只对退出状态感兴趣。我注意到,因为我可以做这样的事情:
ls <- system "ls"
pwd <- system "pwd"
Run Code Online (Sandbox Code Playgroud)
这正确地执行了两个命令。我正在考虑执行这些命令的数组,例如
lsAndPwd <- return $ system <$> ["ls", "pwd"]
Run Code Online (Sandbox Code Playgroud)
我很惊讶这实际上并没有执行任何操作。这会编译,我检查了lsAndPwd它的类型是否正确,[IO GHC.IO.Exception.ExitCode]但从未执行过命令。这是怎么回事,我怎样才能让它发挥作用?
为这个愚蠢的问题道歉,但我不知道如何为此找到参考。我找到了一些 TCP 服务器的代码,这一行让我很困惑:
int master_sockfd, client_sockfds[3] = {0}, cli_sockfd, client_games_started[3];
上面的变量都没有事先初始化,所以看起来它是在这里声明的。有人可以帮我理解这是什么意思吗?如果我记得正确{0}设置int为 0,但在这种情况下我无法理解。我也很困惑如何看起来有两个声明和三个赋值。是的,所有编译的东西都没有错误/警告。谢谢!