私が持っている
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