1

私はこのようなコードを持っています。

int L=25;
float x;

x への値は long 計算によって割り当てられます

if(x<=L)
   x=x-L;

ただし、x=L の場合は値を変更していません。

私も試してみました

if(x>L || x==L)

この場合でも、x=L の場合、x の値は変わりません。

助けてください

4

2 に答える 2

-2

編集:私の最初の見解とは反対に、他のいくつかの見解とは異なり、問題は異なる型を比較す​​ることではありません。コメントによると、そこにあると思われる最新のC標準(http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf)は、その比較を明確にしています一般に、より精度の高い型への型変換を強制します。

余談ですが、私の個人的な見解では、これらの変換を明示的に行う方が賢明です。なぜなら、コードをスキャンすると何が起こっているのかが明確になるからです。ここでの問題は、おそらく別の回答者によって強調されたものです。

問題がタイピングにある可能性は十分にあります。明示するのが最善です:

int L=25;
float x;
// Value to x is allotted by long calculation

if (x <= ((float)L)) {
    x = x - ((float)L);
}

于 2013-05-02T14:38:24.947 に答える