gpt4 book ai didi

C: 将 int 转换为 size_t

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

在 32 位和 64 位 Linux 平台上,用 C99 将 int 转换/转换为 size_t 的正确方法是什么?

例子:

int hash(void * key) {
//...
}

int main (int argc, char * argv[]) {
size_t size = 10;
void * items[size];
//...
void * key = ...;
// Is this the right way to convert the returned int from the hash function
// to a size_t?
size_t key_index = (size_t)hash(key) % size;
void * item = items[key_index];
}

最佳答案

所有算术类型都在 C 中隐式转换。您很少需要强制转换 - 通常仅当您想要向下转换时,减少模 1 加上较小类型的最大值,或者当您需要强制算术为无符号时使用无符号算术属性的模式。

就我个人而言,我不喜欢看类型转换,因为:

  1. 它们是丑陋的视觉困惑,并且
  2. 他们向我建议编写代码的人会收到有关类型的警告,并在不了解警告原因的情况下进行强制转换以关闭编译器。

当然,如果您启用了一些非常挑剔的警告级别,您的隐式转换可能会导致很多警告,即使它们是正确的......

关于C: 将 int 转换为 size_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5481067/

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