C-Ausdrücke (konstant)
Ein konstanter Ausdruck wird zur Kompilierzeit, nicht zur Laufzeit, ausgewertet und kann an einem beliebigen Ort verwendet werden, an dem eine Konstante verwendet werden kann. Der konstante Ausdruck muss eine Konstante auswerten, die sich im Bereich der darstellbaren Werte für diesen Typ befindet. Die Operanden eines konstanten Ausdrucks können ganzzahlige Konstanten, Zeichenkonstanten, Gleitkommakonstanten, Enumerationskonstanten, Typumwandlungen, sizeof-Ausdrücke und andere konstante Ausdrücke sein.
Syntax
constant-expression:
conditional-expressionBedingter Ausdruck:
Ausdruck für 'logisches OR'logical-OR-expression**?** expression**:** conditional-expression
expression:
assignment-expressionexpression**,** assignment-expression
assignment-expression:
conditional-expressionunary-expression assignment-operator assignment-expression
assignment-operator: Einer von
= *= /= %= += –= <<= >>= &= ^= |=
Die Non-Terminals für den Strukturdeklarator, den Enumerator, den direkten Deklarator, den direkt-abstrakten Deklarator und die gekennzeichnete Anweisung enthält das Non-Terminal constant-expression.
Ein ganzzahliger konstanter Ausdruck muss verwendet werden, um die Größe eines Bitfeldmembers einer Struktur, den Wert einer Enumerationskonstante, die Größe eines Arrays oder den Wert einer case-Konstante anzugeben.
Konstante Ausdrücke, die in den Präprozessordirektiven verwendet werden, unterliegen zusätzlichen Einschränkungen. Daher sind sie als "eingeschränkte konstante Ausdrücke" bekannt. Ein eingeschränkter konstanter Ausdruck kann keine sizeof-Ausdrücke, Enumerationskonstanten, Typumwandlungen zu keinem Typ oder Float-Konstanten enthalten. Er kann jedoch den speziellen konstanten Ausdruck defined (identifier) enthalten.