C LanguageLetterali composti


Sintassi

  • (tipo) {inizializzatore-elenco}

Osservazioni

Lo standard C dice in C11-§6.5.2.5 / 3:

Un'espressione postfissa che consiste in un nome di tipo parentesi seguito da un elenco di inizializzatori racchiuso tra parentesi è un letterale composto . Fornisce un oggetto senza nome il cui valore è dato dall'elenco di inizializzazione. 99)

e la nota 99 dice:

Si noti che questo differisce da un'espressione cast. Ad esempio, un cast specifica una conversione in tipi scalari o solo void , e il risultato di un'espressione cast non è un lvalue.

Nota che:

I valori letterali delle stringhe e i letterali composti con tipi qualificati const non devono necessariamente designare oggetti distinti. 101)

101) Ciò consente alle implementazioni di condividere lo spazio di archiviazione per valori letterali costanti e costanti composti costanti con rappresentazioni uguali o sovrapposte.

L'esempio è dato in standard:
C11-§6.5.2.5 / 13:

Come i letterali delle stringhe, i letterali composti const-qualified possono essere inseriti in una memoria di sola lettura e possono anche essere condivisi. Per esempio,

(const char []){"abc"} == "abc"

potrebbe produrre 1 se la memoria dei letterali è condivisa.

Letterali composti Esempi correlati