int main(void)
{
char four[4] = "four";
return 0;
}
Quando compilato come un programma C++, G ++ riportachar four [4] = "four"; Quali sono le semantiche corrette per questa affermazione?
xxx.cpp: In funzione int main():
xxx.cpp: 3: errore: inizializzatore-stringa per array di i caratteri sono troppo lunghi
Quando è compilato un programma C, GCC non segnala alcun errore.
Mi sembra che l'assegnazione copi correttamente tutti i 4 byte nella variabile, come mi aspettavo.
Quindi la mia domanda si riduce a .....
è il comportamento osservato in C corretto o sto toccando un comportamento non definito da qualche parte, o è un'altra cosa?
C'è una domanda molto simile con le risposte che corrispondono a questa domanda qui: http://stackoverflow.com/questions/3216462/initializing-char-arrays-in-a-way-similar-to-initializing-string-literals –
Congratulazioni per averlo trovato. Sì. Discute un po 'il problema. – EvilTeach