❤恋するコンピュータサイエンス❤

コンピュータサイエンス、3DCGをもっと楽しく、もっと本質的に!c言語、c++の記事中心です

リテラルの判別【変数や関数の一文字目には、数字が使えない理由】

Q.
int 1str;
int 2str;

上記は変数の宣言だが、間違いを指摘せよ。


A.
int str1;
int str2;
変数に数字をつけたいなら頭ではなく、お尻につけるのが正解。

解説
変数の頭に数字が使えない理由は下記の理由からである。
コンパイラソースコードを、まず単語単位(トークンという)で切り出してから、
その単語の意味を解析します。
その時、単語の一文字目が、1〜9の数字だった場合、それ以降を10進数の数値として解釈します。
全てが数字だけであれば、整数として、.が含まれていれば実数として。
(1. を1.0と解釈するかはコンパイラ次第だっけ?)

 

一文字目が0だった場合には、その次の文字を読んで、0〜7なら8進数、xなら16進数、みたいに解釈します。

 

そういう理由で、変数や関数の一文字目には、数字は使えません。

まとめ)
コンパイラ
数値が来た場合、
0  の次の文字が0〜7 8進数
x だと16進数
例 0x000B は10進数における11
0以外 1〜9 10進数