Additive Operators [ HP C/iX Reference Manual ] MPE/iX 5.0 Documentation
HP C/iX Reference Manual
Additive Operators
The additive operators perform addition (+) and subtraction (-).
Syntax
additive-expression ::=
multiplicative-expression
additive-expression + multiplicative-expression
additive-expression - multiplicative-expression
Description
The result of the binary addition operator + is the sum of two operands.
Both operands must be arithmetic, or one operand can be a pointer to an
object type and the other an integral type. The usual arithmetic
conversions are performed on the operand if both have arithmetic type.
The result is not an lvalue.
If one operand is a pointer and the other operand is an integral type,
the integral operand is scaled by the size of the object pointed to by
the pointer. As a result, the pointer is incremented by an integral
number of objects (not just an integral number of storage units). For
example, if p is a pointer to an object of type T, when the value 1 is
added to p, the value of 1 is scaled appropriately. Pointer p will point
to the next object of type T. If any integral value i is added to p, i is
also scaled so that p will point to an object that is i objects away
since it is assumed that p actually points into an array of objects of
type T. Use caution with this feature. Consider the case where p points
to a structure that is ten bytes long. Adding a constant 1 to p does not
cause p to point to the second byte of the structure. Rather it causes p
to point to the next structure. The value of one is scaled so a value of
ten (the length in bytes of the structure) is used.
The result of the binary subtraction operator - is the difference of the
two operands. Both operands must be arithmetic; the left operand can be
a pointer and the right can be an integral type; or both must be pointers
to the same type. The usual arithmetic conversions are performed on the
operands if both have arithmetic type. The result is not an lvalue.
If one operand is a pointer and the other operand is an integral type,
the integral operand is scaled by the size of the object pointed to by
the left operand. As a result, the pointer is decremented by an integral
number of objects (not just an integral number of storage units). See
the previous discussion on the addition operator + for more details.
If both operands are pointers to the same type of object, the difference
between the pointers is divided by the size of the object they point to.
The result, then, is the integral number of objects that lie between the
two pointers. Given two pointers p and q to the same type, the
difference p-q is an integer k such that adding k to q yields p.
Examples
var1+var2
var1-var2
MPE/iX 5.0 Documentation