我的代码是这样的。
int L=25;
float x;
x 的值由长计算分配
if(x<=L)
x=x-L;
但是当 x=L 时它不会改变值。
我也试过
if(x>L || x==L)
即使在这种情况下,对于 x=L,x 的值也不会改变。
请帮忙
我的代码是这样的。
int L=25;
float x;
x 的值由长计算分配
if(x<=L)
x=x-L;
但是当 x=L 时它不会改变值。
我也试过
if(x>L || x==L)
即使在这种情况下,对于 x=L,x 的值也不会改变。
请帮忙
要么x
略大于 25,而且您被没有正确显示整个值的软件愚弄认为它恰好是 25,或者正在执行的代码和使用的值与您在此问题中显示的不同。
编辑:与我最初的观点和其他一些观点相反,问题不在于比较不同的类型。根据评论,最新的 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);
}