我们正在将C代码转换为C++。
我注意到以下代码在C中定义良好,
int main(){
//length is valid. '\0' is ignored
char str[3]="abc";
}
根据数组初始化所述:
"如果数组的大小是已知的,它可能比字符串字面量的大小小1,此时终止空字符将被忽略。"
然而,如果我在C++中构建相同的代码,我会得到以下C++错误:
error: initializer-string for array of chars is too long
[-fpermissive] char str[3]="abc";
我希望有人可以解释一下这个问题。
问题:
这个代码示例在所有C语言标准中都有效吗?
在所有C++语言标准中都无效吗?
是否有一个原因,使其在一种语言中有效而在另一种语言中无效?