Оказывается, char c [] = {"a "};
полностью действителен как в C ++ 03 , так и в C ++ 11 .
Я не ожидал, что это будет, потому что это массив из char
, а не из char const *
, и я ожидал, что для инициализатора фигурных скобок потребуется совместимый тип для каждый свой «предмет». В нем есть один элемент, и это char const *
, а не char
.
Так что же делает эту инициализацию действительной? И есть ли этому объяснение?
Аналогично, char c [] = {"aa"};
компилируется, и печать c
приводит к выводу " ] aa
".
Я ожидал, что char c [] {"a"}
, конечно, будет действительным в C ++ 11, но это не то же самое! Аналогично, char c [] = {'a'}
очевидно в обоих, как и char c [] = "a"
.