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