我已经在C和C ++中尝试过以下语句。
char A[5] = {"Hello"};
虽然C接受了这一点,但是C ++抛出错误,指出字符串太长。如果要添加一个空字符,为什么它在C中接受但在C ++中不接受?
[请注意,char A[5]={"Hello"};
是两种语言中的错误。必须有空间分配空终止符。
它使用C进行编译,因为语言6.7.9 / 14具有一个奇怪的特殊规则/语言错误,请特别注意:
字符类型的数组可以由字符串文字或UTF-8字符串初始化文字,可以选择用大括号括起来。字符串文字的连续字节(包括如果有空间,则终止为空字符或数组大小未知),初始化数组的元素。
这允许使用字符串文字初始化字符数组,该字符串文字的字符数与数组大小完全相同,但是会静默丢弃空终止符。
C ++修复了此危险的语言错误。