はC++03とC++11の両方で完全に有効であることが判明しました。`char`配列を初期化するのに有効な文字列リテラルを含む初期化子はなぜですか?
char
の配列がchar const*
ではないため、私はそれが期待できません。また、brace-initialiserには、それぞれの「アイテム」に互換性のあるタイプが必要です。 1つのアイテムがあり、それはchar const*
ではなく、char
です。
この初期設定を有効にするにはどうすればよいですか?そしてそれがそうであることについての理論的根拠はありますか?
同様に、char c[] = {"aa"};
コンパイル、及び出力 "aa
" でc
結果を印刷します。
私はchar c[]{"a"}
はもちろん、C++ 11で有効であると期待されるが、それは同じではありません!同様に、char c[] = {'a'}
は、両方とも明らかであり、char c[] = "a"
である。
あなたは 'char c [] = {" aa "};'を試したことがありますか? –
@VJo:有効です。 –
なぜあなたはそれが無効であると思いますか?あなたが求めていることは本当にはっきりしません。それはそれを禁止する規則がないので有効です。それを禁止すると思われるルールはどれですか? – jalf