标识符名称中的数字是否有任何问题?

C \ C ++ \ Java开始

int 2a ; //invalid suffix "a" on integer constant

虽然它是有效的语法,但是变体名称的其余部分中的数字是否有任何问题?

喜欢 –

 int num1 ; int num_1st ; int num_2nd ; 

我从来没有听说任何人(例如,任何编码标准/指南)在标识符中有数字问题。 尽管如此,它们中有太多可能表明矢量或数组可能更合适 – 即使只有两个,你的num_1stnum_2nd可能会更好numbers[2]

标识符不能以数字开头。 它必须以字母或下划线开头。

变量标识符必须以字母或下划线开头,但其余字符可以是字母,下划线或数字。

你甚至可以对变量进行十分转换:int _ = 0;

或者,如果您熟悉正则表达式,则可将其图案化为:“[a-zA-Z _] \ w *?\ b”

在哪里\ w *? 部分不是必须的。

答案是,标识符名称的其余部分中的数字没有任何问题。

只要变量名称有意义,使用数字作为名称的一部分绝对不是一件坏事。 当然,拥有大量类似命名的变量,最后只有一个数字来区分它们可能是糟糕设计的标志。

我非常肯定,也不允许标识符以数字开头的原因是它使得编写解析器变得更加容易:

 c = getchar(); ungetc(c); if (isdigit(c)) token = number(); else token = identifier(); 

这是规则关闭标识符,它必须以字母或下划线开头,之后只允许数字。