The arithmetic post- and pre-increment and decrement operators (-- and
++) operate on built-in scalar and vector types except the built-in scalar
All unary operators work component-wise on their operands.
These result with the same type they operated on.
For post- and pre-increment and decrement, the expression must be one that
could be assigned to (an l-value).
Pre-increment and pre-decrement add or subtract 1 to the contents of the
expression they operate on, and the value of the pre-increment or
pre-decrement expression is the resulting value of that modification.
Post-increment and post-decrement expressions add or subtract 1 to the
contents of the expression they operate on, but the resulting expression has
the expression’s value before the post-increment or post-decrement was
 The pre- and post- increment operators may have unexpected behavior on
floating-point values and are therefore not supported for floating-point
scalar and vector built-in types.
For example, if variable a has type
float and holds the value
(a++)-- is not guaranteed to return a, if a has fractional
In non-default rounding modes,
(a++)-- may produce the same result as
a-- for large a.
For more information, see the OpenCL C Specification
This page is extracted from the OpenCL C Specification. Fixes and changes should be made to the Specification, not directly.
Copyright (c) 2014-2020 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.