Si scopre che char c[] = {"a"};
è completamente valido sia in C++03 sia in C++11.Perché un inizializzatore contiene una stringa letterale valida per inizializzare una matrice `char`?
non ci si aspetterebbe che fosse, perché è un array di char
non di char const*
, e ci si aspetta un tutore-initialiser richiedere un tipo compatibile per ciascuna delle sue "oggetti". Ha un articolo, e questo è un char const*
non uno char
.
Quindi cosa rende valida questa inizializzazione? E c'è una logica per essere così?
Allo stesso modo, char c[] = {"aa"};
compila e stampa c
risultati nell'output "aa
".
mi sarei aspetto char c[]{"a"}
di essere valido in C++ 11, naturalmente, ma non è la stessa cosa! Allo stesso modo, char c[] = {'a'}
è evidente in entrambi, così come lo è char c[] = "a"
.
Hai provato 'char c [] = {" aa "};'? –
@VJo: valido anche. –
Perché ti aspetti che non sia valido? Non è chiaro cosa stai chiedendo. È valido perché non ci sono regole che lo proibiscano. Quale regola ti aspetteresti di proibirlo? – jalf