我的印象是,只能用字母和_开头变量名,但是在进行测试时,我还发现可以用$开头变量名,如下所示:
#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”,并且将标识符非数字字符定义为:
因此,实现可以定义标识符中允许的其他字符。
包含在通用字符名称中的字符是C标准附件D中列出的字符。
C中的变量名称由字母(大写和小写)和数字组成。
这是错误的;标识符可以在每个符合的实现中包括下划线和上述通用字符,以及在允许它们的实现中包括其他字符。
不允许$-仅字母和_
这是不正确的。C标准不需要实现允许使用“ $”,但是它并不禁止实现允许使用“ $”。某些实现而不是其他实现允许使用“ $”。可以说,它不是严格符合C程序的一部分,而可以是符合C程序的一部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句