如果我有一个int和一个size_t变量,我可以比较它们:
int i=1;
size_t y=2;
if(i==y)
// do something..
Run Code Online (Sandbox Code Playgroud)
或者我必须输入其中一个?
Phi*_*ter 57
只要int零或正数,它就是安全的.如果它是负数,并且size_t等于或高于等级int,则将int转换为size_t,因此其负值将变为正值.然后将这个新的正值与该size_t值进行比较,该值可能(以惊人的不可能的重合)给出假阳性.为了真正安全(也许是过于谨慎),int首先要检查是非负的:
/* given int i; size_t s; */
if (i>=0 && i == s)
Run Code Online (Sandbox Code Playgroud)
并禁止编译器警告:
if (i>=0 && (size_t)i == s)
Run Code Online (Sandbox Code Playgroud)