gpt4 book ai didi

比较 int 和 size_t

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

如果我有一个 int 和一个 size_t 变量,我可以像这样比较它们吗:

int i=1;
size_t y=2;
if(i==y)
// do something..

还是我必须对其中之一进行类型转换?

最佳答案

只要 int 为零或正数,它就是安全的。如果它是负数,并且 size_t 的等级等于或高于 int,那么 int 将被转换为 size_t 所以它的负值会变成正值。然后将这个新的正值与 size_t 值进行比较,这可能(在一个极不可能的巧合中)给出误报。为了真正安全(也可能过于谨慎),首先检查 int 是否为非负值:

/* given int i; size_t s; */
if (i>=0 && i == s)

并抑制编译器警告:

if (i>=0 && (size_t)i == s)

关于比较 int 和 size_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642010/

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