gpt4 book ai didi

c - 为什么在C语言中变量名可以以$开头?

转载 作者:太空狗 更新时间:2023-10-29 17:08:04 27 4
gpt4 key购买 nike

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

代码

#include <stdio.h>

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

输出

13
42

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

这些文章是否只是没有提到这种细微差别,如果是,为什么这是 C 的一个特性?

最佳答案

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

它将标识符定义为一个identifier-nondigit 字符后跟任意数量的identifier-nondigitdigit 个字符。它将数字定义为“0”到“9”,并将identifier-nondigit字符定义为:

  • 一个非数字,它是下划线、“a”到“z”或“A”到“Z”之一,
  • 一个通用字符名,或者
  • 其他实现定义的字符。

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

universal-character-name 中包含的字符是列在 C 标准附件 D 范围内的字符。

resource you link to有几个地方是错误的:

Variable names in C are made up of letters (upper and lower case) and digits.

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

$ not allowed -- only letters, and _

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

关于c - 为什么在C语言中变量名可以以$开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57949289/

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