私はこのようなコードを持っています。
int L=25;
float x;
x への値は long 計算によって割り当てられます
if(x<=L)
x=x-L;
ただし、x=L の場合は値を変更していません。
私も試してみました
if(x>L || x==L)
この場合でも、x=L の場合、x の値は変わりません。
助けてください
私はこのようなコードを持っています。
int L=25;
float x;
x への値は long 計算によって割り当てられます
if(x<=L)
x=x-L;
ただし、x=L の場合は値を変更していません。
私も試してみました
if(x>L || x==L)
この場合でも、x=L の場合、x の値は変わりません。
助けてください
編集:私の最初の見解とは反対に、他のいくつかの見解とは異なり、問題は異なる型を比較することではありません。コメントによると、そこにあると思われる最新の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);
}