转换/投射的正确方法是什么int
to a size_t
在 32 位和 64 位 linux 平台上的 C99 中?
Example:
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 加上较小类型的最大值时,或者当您需要强制算术进入无符号模式才能使用时无符号算术的性质。
就我个人而言,我不喜欢看到演员阵容,因为:
- 它们是丑陋的视觉混乱,而且
- 他们向我暗示,编写代码的人收到了有关类型的警告,并在不了解警告原因的情况下进行了强制转换以关闭编译器。
当然,如果您启用一些非常挑剔的警告级别,您的隐式转换可能会导致大量警告,即使它们是正确的......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)