事實證明char c[] = {"a"};
在C++03和C++11中都是完全有效的。爲什麼包含字符串常量的初始化程序有效初始化一個char數組?
我不希望它是,因爲它是char
而不是char const*
的數組,我期望一個括號初始化程序要求它的每個「項目」都有一個兼容的類型。它有一個項目,這是一個char const*
而不是一個char
。
那麼是什麼讓這個初始化有效?是否有這樣的理由?
同樣,char c[] = {"aa"};
編譯,並打印c
結果在輸出 「aa
」。
我會期望char c[]{"a"}
是在C++ 11,當然有效,但它是不一樣的!同樣,char c[] = {'a'}
在兩者中都是顯而易見的,因爲是char c[] = "a"
。
你嘗試過'char c [] = {「aa」};'? –
@VJo:同樣有效。 –
你爲什麼期望它是無效的?真的不清楚你在問什麼。這是有效的,因爲沒有規則禁止它。你會期望禁止它的哪一條規則? – jalf