1

我的代码是这样的。

int L=25;
float x;

x 的值由长计算分配

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

但是当 x=L 时它不会改变值。

我也试过

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

即使在这种情况下,对于 x=L,x 的值也不会改变。

请帮忙

4

2 回答 2

2

要么x略大于 25,而且您被没有正确显示整个值的软件愚弄认为它恰好是 25,或者正在执行的代码和使用的值与您在此问题中显示的不同。

于 2013-05-02T14:50:13.957 回答
-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 回答