gpt4 book ai didi

c - 为什么 C 不使用特殊的转义字符串终止字符终止字符串?

转载 作者:太空狗 更新时间:2023-10-29 16:30:04 25 4
gpt4 key购买 nike

在 C 语言中,字符串以空值 (\0) 结尾,当您想在字符串中放置空值时会导致问题。为什么不使用特殊的转义字符,例如\$ 或其他字符?

我完全知道这个问题有多愚蠢,但我很好奇。

最佳答案

以 0 结尾有很多性能上的优点,这在 60 年代后期非常重要。

CPU 有针对 0 的条件跳转指令。事实上,一些 CPU 甚至有指令可以迭代/复制字节序列直到 0。

如果您改为使用转义字符,则您有两个测试 两个不同的字节来断言字符串的结尾。这不仅速度较慢,而且您失去了一次迭代一个字节的能力,因为您需要先行或回溯的能力。

现在,其他语言(cough、Pascal、cough)使用计数/值样式的字符串。对于他们来说,任何字符都是有效的,但他们总是保留一个带有字符串大小的计数器。优点很明显,但这种技术也有缺点。

一方面,字符串大小受计数占用的字节数限制。一个字节给你 255 个字符,两个字节给你 65535,依此类推。今天这可能几乎无关紧要,但一次向每个字符串添加两个字节是非常昂贵的。

编辑:

我不认为这个问题很愚蠢。在具有内存管理、令人难以置信的 CPU 能力和大量内存的高级语言的今天,过去的这些决定似乎毫无意义。而且,事实上,他们现在可能毫无意义,所以质疑他们是一件好事。

关于c - 为什么 C 不使用特殊的转义字符串终止字符终止字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1151104/

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