c - 为什么 C 关键字区分大小写?

标签 c case-insensitive

C 关键字由 C 编译器预定义,在 C89 中为小写。既然只有 32 个,为什么不能将它们定义为不区分大小写呢?

最佳答案

因为C是区分大小写的,而这些是关键字。使它们不区分大小写会使编译器变慢,但真正的原因是它的定义方式。

上世纪 60 年代,人们对​​字母大小写进行了大量实验。一段时间,BCPL reserved lowercase words as system keywords为了与用户名区分开来,用户名必须是大写或单字母小写。但后来他们切换到大写(后来又切换回小写),并且 whether it was case sensitive depended on the compiler 。 FORTRAN/Fortran 也是如此,通常根本不区分大小写,但是 sometimes is in wildly complicated ways .

因此,当我说“它会使编译器变慢”时,我的意思并不是“因为它是一种较旧的语言,并且处理器时间更宝贵”。大多数现代语言都区分大小写。许多较旧的语言在其历史和实现中都具有不同程度的大小写敏感性。但从根本上来说,区分大小写对于计算机来说更简单。这就是大多数 Unix 的设计方式,而 C(最初是 B)是 built to be the system language for Unix 。但同样,这只是一个 particular design decision in Unix ,而不是一些“一定是这样”的深刻选择。

但所有这些都只是闲聊和反证答案。答案是:因为 C 就是这样定义的。

关于c - 为什么 C 关键字区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41209377/

相关文章:

c - jpg 格式不正确,混合了多个图像。谁能告诉我怎么了 ?“RECOVER”

c - 读取两个整数并找出第一个整数的所有小于第二个整数的正倍数

bash - 如何忽略/恢复文件内容中大小写的更改?

PHP 不区分大小写的 explode()

c - 为什么输出是 0000 以及如何输出?

c - 处置(释放)整个二叉搜索树

c - [C][Postgresql] PQfinish(conn) 上的段错误线程 2

regex - mod_rewrite RewriteCond - 仅域部分需要 Ncflags吗?还有一些

ruby-on-rails-3 - 如何为 Rails 3 编写不区分大小写的 find_by_email

PHP 不区分大小写等价于 strtr