如何将int转换为VARTYPE

How to convert int to VARTYPE?

本文关键字:VARTYPE 转换 int      更新时间:2023-10-16

我有

vt = x;

warning C4244: '=' : conversion from 'int' to 'VARTYPE', possible loss of data

但是代码工作足够稳定,所以我怎么才能摆脱这个警告?

warning C4244: '=' : conversion from 'int' to 'VARTYPE', possible loss of data

这表明intVARTYPE宽,执行此强制转换会失去精度。

但是代码足够稳定

如果你想给自己信心,这确实是一个安全的操作,你应该确保你执行的测试涵盖了广泛的x值。如果您的目标使用32位int,那么您应该确保达到2^162^32-1这样的值,并且仍然得到预期的结果。如果x表示一个数量,该操作将意味着对于超出VARTYPE可以表示的范围的值,您将获得一个可以用VARTYPE表示的值。

例如,如果VARTYPE被存储为16位字,int被存储为32位字,那么当x的值从65535增长到65536时,vt将被重置(从655350)。

编辑:您指出VARTYPEunsigned short,所以一定要避免在声明为intVARTYPE的变量之间进行比较。