我有
vt = x;
和
warning C4244: '=' : conversion from 'int' to 'VARTYPE', possible loss of data
但是代码足够稳定,所以我怎样才能摆脱这个警告呢?
我有
vt = x;
和
warning C4244: '=' : conversion from 'int' to 'VARTYPE', possible loss of data
但是代码足够稳定,所以我怎样才能摆脱这个警告呢?
warning C4244: '=' : conversion from 'int' to 'VARTYPE', possible loss of data
这表明它比执行此转换int
更宽,VARTYPE
并且您正在失去精度。
但是代码工作足够稳定
如果你想让自己相信这确实是一个安全的操作,你应该确保你执行的测试涵盖了广泛的x
. 如果你的目标使用 32 位int
,那么你应该确保你达到了类似的值2^16
,2^32-1
并且仍然得到预期的结果。如果x
表示一个量,则此操作将意味着对于可以用 表示的范围之外的值VARTYPE
,您将得到一个可以用 表示的值VARTYPE
。
例如,如果VARTYPE
存储为 16 位字并int
存储为 32 位字,则随着 的值x
从 65535 增长到 65536,vt
将改为重置(从65535
到0
)。
编辑:你指出那VARTYPE
是一个unsigned short
,所以一定要避免在声明为int
和的变量之间进行比较VARTYPE
。