The ternary selection operator (?:) operates on three expressions (exp1
? exp2 : exp3).
This operator evaluates the first expression exp1, which can be a scalar
or vector result except
If all three expressions are scalar values, the C99 rules for ternary
operator are followed.
If the result is a vector value, then this is equivalent to calling
select(exp3, exp2, exp1).
The select function is described in https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_C.html#table-builtin-relational.
The second and third expressions can be any type, as long their types match,
or there is an implicit conversion that can be
applied to one of the expressions to make their types match, or one is a
vector and the other is a scalar and the scalar may be subject to the usual
arithmetic conversion to the element type used by the vector operand and
widened to the same type as the vector type.
This resulting matching type is the type of the entire expression.
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.