为什么在C中以$开头变量名?

杰伊·莫迪

我的印象是,只能用字母和_开头变量名,但是在进行测试时,我还发现可以用$开头变量名,如下所示:

#include <stdio.h>

int main() {
    int myvar=13;
    int $var=42;
    printf("%d\n", myvar);
    printf("%d\n", $var);
}

输出量

13
42

根据此资源,它说您不能在C中以$开头变量名,这是错误的(至少在使用我的gcc版本Apple LLVM版本10.0.1(clang-1001.0.46.4)进行编译时)。我在网上找到的其他资源似乎也表明变量不能以$开头,这就是为什么我感到困惑的原因。

这些文章难道没有提到这个细微差别吗?如果是,为什么这是C的功能?

埃里克·波斯蒂奇

在C 2018标准中,第6.4.2节第1段允许实现允许标识符中包含其他字符。

它定义一个标识符标识符非数字字符,后跟任意数量的标识符非数字数字字符。它将数字定义为“ 0”至“ 9”,并且将标识符非数字字符定义为:

  • 一个非数字,这是下划线的一个,“a”至“Z”或“A”至“Z”,
  • 一个普遍的字符名称,或
  • 其他实现定义的字符。

因此,实现可以定义标识符中允许的其他字符。

包含在通用字符名称的字符是C标准附件D中列出的字符

您链接到资源在几个地方是错误的:

C中的变量名称由字母(大写和小写)和数字组成。

这是错误的;标识符可以在每个符合的实现中包括下划线和上述通用字符,以及在允许它们的实现中包括其他字符。

不允许$-仅字母和_

这是不正确的。C标准不需要实现允许使用“ $”,但是它并不禁止实现允许使用“ $”。某些实现而不是其他实现允许使用“ $”。可以说,它不是严格符合C程序的一部分,而可以是符合C程序的一部分

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么不能Java变量名以数字开头?

为什么变量名通常以字母“ m”开头?

为什么变量名以字母“ k”开头?

在R中,为什么变量名称以'。'开头 没有出现在我的环境中?

STM32示例中变量名开头的“uw”是什么意思?

变量名中$的含义是什么?

为什么指针 (*) 和数组 ([]) 符号绑定到变量名而不是变量声明中的类型?

为什么struct在C / C ++中有两个变量名

C中结构外部的变量名

变量名如何存储在C中?

下划线作为Java中的变量名。为什么?

为什么将冒号放在变量名之前是js中的有效代码?

为什么不应该在python中动态生成变量名?

为什么 pd.read_csv 不接受 Windows 文件路径中的变量名?

为什么gcc在变量名中不显示$的警告消息?

为什么pylint反对单字符变量名?

为什么允许“ let”作为变量名?

为什么星号在变量名之前而不是类型之后?

为什么不能使用“宽”作为变量名?

C#中变量名中@字符的用途/含义是什么?

为什么在声明变量时,C ++允许我们在括号内将变量名括起来?

在C#中,变量名前的@符号是什么意思?

为什么Django中的某些include需要字符串,而另一些变量名呢?

为什么 Python 3.10 中的关键字`match` 可以作为变量名或函数名?

Python中的变量名不能以数字开头,或者可以吗?

ms access VBA中变量名开头的下划线?

正则表达式(C#)-如何匹配以冒号开头的变量名

Bash-在变量名中扩展变量名

Guile 是否通过允许以数字开头的变量名来放宽对变量名约定的限制?