我有
vt = x;
和
warning C4244: '=' : conversion from 'int' to 'VARTYPE', possible loss of data
但是代码运行得足够稳定,所以如何摆脱这个警告?
答案 0 :(得分:1)
warning C4244: '=' : conversion from 'int' to 'VARTYPE', possible loss of data
这表明int
比VARTYPE
更宽,并且您通过执行此演员表而失去了精确度。
但是代码运行得足够稳定
如果你想让自己确信这确实是一个安全的操作,你应该确保执行涵盖x
的各种值的测试。如果您的目标使用32位int
,那么您应确保点击2^16
,2^32-1
等值并仍然获得预期结果。如果x
表示数量,则此操作将表示对于可由VARTYPE
表示的范围之外的值,您将获得可由VARTYPE
表示的值。< / p>
例如,如果VARTYPE
存储为16位字,int
存储为32位字,则x
的值从65535增加到65536 ,vt
将重置(从65535
到0
)。
编辑:您表明VARTYPE
是unsigned short
,因此请务必避免在声明为int
和VARTYPE
的变量之间进行比较。