HP 3000 Manuals

Relational Operators [ HP C/iX Reference Manual ] MPE/iX 5.0 Documentation


HP C/iX Reference Manual

Relational Operators 

The relational operators compare two operands to determine if one operand
is less than, greater than, less than or equal to, or greater than or
equal to the other.

Syntax 

     relational-expression ::=
         shift-expression 
         relational-expression <  shift-expression 
         relational-expression >  shift-expression 
         relational-expression <= shift-expression 
         relational-expression >= shift-expression 

Description 

The usual arithmetic conversions are performed on the operands if both
have arithmetic type.  Both operands must be arithmetic or both operands
must be pointers to the same type.  In general, pointer comparisons are
valid only between pointers that point within the same aggregate or
union.

Each of the operators < (less than), > (greater than), <= (less than or
equal) and >= (greater than or equal) yield 1 if the specified relation
is true; otherwise, they yield 0.  The resulting type is int and is not
an lvalue.

When two pointers are compared, the result depends on the relative
locations in the data space of the objects pointed to.  Pointers are
compared as if they were unsigned integers.

Because you can use the result of a relational expression in an
expression, it is possible to write syntactically correct statements that
appear valid but which are not what you intended to do.  An example is
a<b<c.  This is not a representation of "a is less than b and b is less
than c." The compiler interprets the expression as (a<b)<c.  This causes
the compiler to check whether a is less than b and then compares the
result (an integer 1 or 0) with c.

Examples 

     var1 < var2

     var1 > var2

     var1 <= var2

     var1 >= var2



MPE/iX 5.0 Documentation