- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在我的项目中使用的源文件中,ssize_t
和 size_t
变量之间有一个比较:
ssize_t sst;
size_t st;
if(sst == st){...}
我想摆脱警告:
warning: comparison between signed and unsigned integer expressions
但我不确定,我应该将哪个变量转换为另一个变量?
if((size_t)sst == st){...}
或
if(sst == (ssize_t)st){...}
什么更安全、更好、更清洁?谢谢
最佳答案
这个问题没有唯一的正确答案。有几种可能的答案,具体取决于您对这些变量可能取的值先验的了解。
如果您知道 sst
是非负数,那么您可以安全地将 sst
转换为 size_t
,因为这不会更改值(顺便说一下,如果您根本没有类型转换,就会发生这种情况)。
如果 sst
可能为负,但您知道 st
永远不会大于 SSIZE_MAX
,那么您可以安全地转换 st
到 ssize_t
,因为这不会改变值。
如果 sst
可能为负,并且 st
可能大于 SSIZE_MAX
,则两种类型转换都不正确;任何一个都可能更改值,从而导致不正确的比较。相反,您可以执行以下操作 if (sst >= 0 && (size_t)sst == st)
。
如果您不是绝对确定前两种情况中的一种适用,请选择第三个选项,因为它在所有情况下都是正确的。
关于c++ - 施放 ssize_t 或 size_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16086331/
我在字符串中有一个实例变量名 var name: String 我的类实现了 NSCoding 协议(protocol)。所以对于我的名字 func encodeWithCoder(aCoder: N
在我的项目中使用的源文件中,ssize_t 和 size_t 变量之间有一个比较: ssize_t sst; size_t st; if(sst == st){...} 我想摆脱警告: warning
我是一名优秀的程序员,十分优秀!