0

我有

vt = x;

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

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

4

1 回答 1

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

这表明它比执行此转换int更宽,VARTYPE并且您正在失去精度。

但是代码工作足够稳定

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

例如,如果VARTYPE存储为 16 位字并int存储为 32 位字,则随着 的值x从 65535 增长到 65536,vt将改为重置(从655350)。

编辑:你指出那VARTYPE是一个unsigned short,所以一定要避免在声明为int和的变量之间进行比较VARTYPE

于 2013-06-19T05:12:54.927 回答