gpt4 book ai didi

java - 对 C++ 中 ptrdiff_t 的使用感到困惑

转载 作者:太空狗 更新时间:2023-10-29 19:49:01 29 4
gpt4 key购买 nike

我需要用 Java 翻译这行代码,我正在不确定如何处理 ptrdiff_t。不确定它在这里做什么。顺便说一句,mask_block是 size_t 类型。

size_t lowest_bit = mask_block & (-(ptrdiff_t)mask_block);

谢谢

最佳答案

当心!这有点神奇!

( x & ~(x-1) ) 返回表达式中设置的最低位。原始代码的作者决定使用 ( x & (-x) ) 由于 two's comlement 而实际上是相同的整数的表示。但是(原作者认为)要得到-x你需要使用signed types并且正如前面指出的那样,ptrdiff_t是有符号的,size_t 未签名。

由于 Java 没有无符号类型,mask_block 将为 int 并且 mask_block & (-mask_block) 将正常工作。

请注意,由于有符号和无符号类型之间的互操作性,强制转换在 C++ 中也是多余的。

关于java - 对 C++ 中 ptrdiff_t 的使用感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14307844/

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