作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有
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
宽,执行此转换会导致精度下降。
But the code works enough stable
如果你想让自己相信这确实是一个安全的操作,你应该确保你执行的测试涵盖了 x
的广泛值。如果您的目标使用 32 位 int
,那么您应该确保您命中了 2^16
、2^32-1
这样的值并且仍然得到预期的结果。如果 x
表示一个数量,此操作将意味着对于超出 VARTYPE
可以表示的范围的值,您将得到一个可以用 表示的值code>VARTYPE
.
例如,如果 VARTYPE
存储为 16 位字,int
存储为 32 位字,则作为 x 的值
从 65535 增长到 65536,vt
将改为重置(从 65535
到 0
)。
编辑:您指出 VARTYPE
是一个 unsigned short
,所以一定要避免在声明为 int
和 的变量之间进行比较VARTYPE
.
关于c++ - 如何将 int 转换为 VARTYPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17183281/
我是一名优秀的程序员,十分优秀!