gpt4 book ai didi

c++ - 为什么 C++ 需要 6 大小的数组来存储 5 个字母的单词,而 C 只允许 5 个?

转载 作者:行者123 更新时间:2023-12-01 18:57:33 24 4
gpt4 key购买 nike

我在 C 和 C++ 中尝试过以下语句。

char A[5] = {"Hello"};

虽然 C 接受这一点,但 C++ 会抛出错误,指出字符串太长。如果要添加空字符,为什么在 C 中可以接受,而在 C++ 中却不能?

最佳答案

请注意,char A[5]={"Hello"}; 是这两种语言中的错误。必须有空间分配空终止符。

它用 C 编译,因为语言 6.7.9/14 有一个奇怪的特殊规则/语言错误,强调我的:

An array of character type may be initialized by a character string literal or UTF−8 string literal, optionally enclosed in braces. Successive bytes of the string literal (including the terminating null character if there is room or if the array is of unknown size) initialize the elements of the array.

这允许使用字符串文字来初始化字符数组,该字符串文字的字符数量与数组的大小完全相同,但会默默地丢弃空终止符。

C++ 修复了这个危险的语言错误。

关于c++ - 为什么 C++ 需要 6 大小的数组来存储 5 个字母的单词,而 C 只允许 5 个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58428098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com