ID: Q156913
The information in this article applies to:
The following code sets the Boolean to true, whereas the correct value is false:
int i = 0;
boolean b = (0 < i);
b is set to true.
This problem is due to bad code generated by the compiler.
Change the above code as shown below:
int i = 0;
boolean b = (i > 0);
Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article. This problem has been fixed in Visual J++ 1.1.
The problem occurs only when 0 is the literal on the left side of the operator. If the left side of the operator is a variable or a literal other than 0, then the expression is evaluated correctly. The following expressions are evaluated correctly:
int i = 0;
int j = 0;
boolean b = (i < j);
i++;
b = (1 < i);
Some of the common places where you might run into this bug are in
conditional statements or loops.
Steps to Reproduce Problem
Use the following code to reproduce the problem:
int i = 0;
boolean b = (0 < i);
Additional query words: comparison
For the latest Knowledge Base articles and other support information on Visual J++ and the SDK for Java, see the following page on the Microsoft Technical Support site:
http://support.microsoft.com/support/visualj/
http://support.microsoft.com/support/java/
Keywords : kbCommandLine
Version : 1.0
Platform : WINDOWS
Issue type : kbbug
Solution Type : kbfix
Last Reviewed: January 24, 1998