C\C++\Java以来 -
int 2a ; //invalid suffix "a" on integer constant
有効な構文ですが、バリアント名の残りの数字に問題はありませんか?
お気に入り -
int num1 ;
int num_1st ;
int num_2nd ;
C\C++\Java以来 -
int 2a ; //invalid suffix "a" on integer constant
有効な構文ですが、バリアント名の残りの数字に問題はありませんか?
お気に入り -
int num1 ;
int num_1st ;
int num_2nd ;
識別子の数字に問題があった人 (コーディング標準/ガイドラインなど) のことは聞いたことがありません。それにもかかわらず、それらの数が多すぎると、ベクトルまたは配列が望ましい可能性があることを示している可能性num_1st
がありnum_2nd
ますnumbers[2]
。
識別子は数字で始めることはできません。文字またはアンダースコアで始まる必要があります。
変数識別子は文字またはアンダースコアで始まる必要がありますが、残りの文字は文字、アンダースコア、または数字にすることができます。
変数を宣言することもできます: int _ = 0;
または、正規表現に精通している場合は、「[a-zA-Z_]\w*?\b」のようにパターン化できます。
\w* はどこですか? 部分は必須ではありません。
これは、文字またはアンダースコアで始まる必要があり、その後は数字のみが許可されるというルール オフの識別子です。
変数名に意味がある限り、名前の一部として数字を使用することは間違いなく悪いことではありません。もちろん、それらを区別するために最後に数字だけが付いた、似たような名前の変数が多数あることは、設計が悪いことを示している可能性があります。
数字で始まる識別子を許可しない理由は、パーサーの記述が非常に簡単になるためだと確信しています。
c = getchar();
ungetc(c);
if (isdigit(c))
token = number();
else
token = identifier();