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-1xVARTYPEVARTYPE

たとえば、VARTYPEが 16 ビット ワードintとして格納され、 が 32 ビット ワードとして格納されている場合、 の値がx65535 から 65536 に増加すると、vt代わりに がリセットされます (から655350)。

編集: が であることを示してVARTYPEいるため、 と として宣言されているunsigned short変数間の比較は避けてください。intVARTYPE

于 2013-06-19T05:12:54.927 に答える