为啥 $ 符号不能用作标识符的一部分? [复制]
Posted
技术标签:
【中文标题】为啥 $ 符号不能用作标识符的一部分? [复制]【英文标题】:Why the $ symbol can not be used as a part of an identifier? [duplicate]为什么 $ 符号不能用作标识符的一部分? [复制] 【发布时间】:2017-09-08 08:27:33 【问题描述】:我是 C++ 的新手。我在一本 C++ 的书中找到了以下语句:“在任何 C++ 程序中,变量名都以字母开头,并且只包含字母、数字和下划线。以下不是变量名:”
2x // a name must start with a letter
time$to$market // $ is not a letter, digit, or underscore
Start menu // space is not a letter, digit, or underscore
问题是为什么time$to$market
不是变量名?
我尝试编译它并且编译器没有抱怨,我使用的编译器是 QT 中的 MinGW 32bit for c++。但是它应该抱怨!
【问题讨论】:
我们不能在变量名中使用$符号,特殊字符中只允许下划线 GCC(可能还有其他)有一个扩展名,允许在标识符中使用$
。
老兄,字母表示a-z
和A-Z
。数字表示0-9
。下划线表示_
。
@Yves:这实际上不是真的(关于字母),尽管常识是您应该限制自己使用单码点、无重音的拉丁字母字符。
@Yves 为什么这个问题的分数很低?这让我被禁止提出进一步的问题?
【参考方案1】:
编译器有不同的变体。一种可能编译得更快,另一种可能由于某些原因而与某些默认设置不同。不知道你用的是什么编译器。但是,如果您对编译器进行一些研究,您会发现 $ 是允许的。尝试使用不同的编译器进行编译,以完全赶上你的书。查看此主题以了解纯 c++ 的含义。因为书籍通常教纯语言。
What is pure C++
【讨论】:
【参考方案2】:我尝试使用它,编译器没有报错。
即使您当前的编译器支持它,也不要这样做(正如 Quentin 在评论中指出的那样)。它不在标准中,因此您的代码不能移植到其他环境,甚至不能移植到使用不同标准的相同编译器(尝试 GCC 选项-ansi
、-std=c++11
etc.)。可能发生的最好情况是您在编译时遇到错误,最糟糕的是您将在几个小时内寻找未定义的行为。
【讨论】:
【参考方案3】:这完全取决于您使用的编译器,因为我在 TC 4.5 中使用它会显示此错误:
编译DEMO.C:
非法字符'$' (0x24)
一些编译器可能支持它。
【讨论】:
以上是关于为啥 $ 符号不能用作标识符的一部分? [复制]的主要内容,如果未能解决你的问题,请参考以下文章