- 締切済み
VBAの変数は何故「i」から始まることが多い?
最近、エクセルVBAを始めたものです。 サイトや解説本でいろいろな記述を見たのですが、私が見た限りでは全ての例で、最初に出てくる変数は「i」で表現されていました。 そして次に出てくる変数は「j」。 (例えば、 For i = 1 to 10 ・・・・ Next i とか) 26あるアルファベットからたまたま「i」が選ばれた?にしては、数多くの解説本やサイトで「i」が使用されているので疑問に思いました。 変数を表すのに、例えば「a」「b」「c」……としても何ら問題にならないと思うのですが…… 「i」にしているのには何か理由があるのでしょうか。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- jcctaira
- ベストアンサー率58% (119/204)
昔のことですが、整数の暗黙的な変数はI~Nでした。 よってI,J,K……Nという順番で使われていると思います。 またIndexとして使われるので頭文字Iが使われていることもあるかも知れません。 個人的にはIと1が見た目で間違うので、違う変数を使った方が良いような気もしますが…。
- Wendy02
- ベストアンサー率57% (3570/6232)
ループ・カウンターは、i を使うというのは、コーディング・ルールにありますね。こういう動きそのものを、incremental(増加の形容詞)または、increments と言いますが、その略称から、 i が使われたと思っています。確かに、数値は、データ型の意味ではなくて、integer の整数が使われ、iteration 繰り返しですが。 iの次の j, k が使われます。しかし、l(エル)は、当方では使わないようにしています。1(いち)と見誤りやすいからです。また、小文字を使うのが通例です。 何でも使っても構わないものの、あまり何でもありになると読みにくくなるというか、暗黙のルールのようなもがあるので、それ以外を使うと、そういうことを知らない人だと思われます。また、データ側は、現在では、Long型にするというのが、一般的です。 なお、いわゆる変数のプレフィックス(接頭辞)は、数値型は、Lng, Int などは付けないようにすると聞きます。それは、いずれ.Net の移行を想定していると言いますが、変数のプレフィックスを表立って否定するのは、ハンガリアン記法の提唱者のチャールズ・シモニーが、Microsoft を辞めたせいかもしれません。(笑)
- bajutsu
- ベストアンサー率20% (139/693)
For文で使われる添え字は、そもそも indexのことなので それの省略形で i とされています。 二重ループとかになると、j が出てきますが、 これは単にアルファベット順で i の次だから j。 以降、ループが増えるごとにk、l...と続きます。 変数名の先頭にiが付くパターンは、 整数系を表す integer の頭文字です。 変数名だけを見ただけで、変数の型が分かった方が 読みやすいんじゃねーの?的な発想から広まりました。 変数の型が、文字列の場合は、stringを表す s とか、str とかから 始まることが多いです。
- osamuy
- ベストアンサー率42% (1231/2878)
>FORTLAN うぉっと、FORTRANですね。
- osamuy
- ベストアンサー率42% (1231/2878)
数学などで、添え字にiを使うことが多いから。 最初期のプログラミング言語FORTLANでは、変数名IやJ、Kなどは明示的に型宣言しなくても整数型として扱うという仕様があるくらい、理系な人ならなじみのある表現なのでしょう。 それで、そこらへんの慣習を踏まえて、BASICに限らず、たいていのプログラミング言語でiを使うことが多いのではないかと。 たぶんですが。
- noyuo
- ベストアンサー率39% (33/84)
integer(=整数)の頭文字のiを使うのが慣習になってるのでは?。 また、プログラム言語に依っては、変数の型宣言を省略したときに、 iで始まっている変数を整数型として扱うなどというものもありました。 また、ソフトウエアの開発会社の中には、整数型の変数名を、iで始めるという ことをコーディング時の規約として定めているケースもありますので、 そういった関係かもしれません。その著者の方の習慣なんでしょうかね。 でも、実際には変数名をiなどとしたら、長いプログラムではエディタソフトで 検索する時は大変ですよねぇ。
- 40000Km
- ベストアンサー率13% (3/23)
昔のFORTRANの名残だと思います FORTRANではi~nで始まる変数は整数型その他は実数型でした。 だからループカウンタなどは整数なのでiから使っていると思います