意味を持たない変数の名前の付け方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Jimmy

意味を持たない変数の名前の付け方

#1

投稿記事 by Jimmy » 13年前

C言語初心者です。

i,jなどの見ても何の変数か意味が分からない変数の名前の付け方を教えください。
なぜ、iなんですか?あまり使わないからですか?変数i,変数jの続きがあるとしたら何のアルファベットですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 意味を持たない変数の名前の付け方

#2

投稿記事 by softya(ソフト屋) » 13年前

意味のない変数の名前は余り使わないほうが良いです。
そういう前提のものとであえて使う場合もあるi,jですが私はFORTRAN起源説を支持します。

昔のFORTRANではi,j,k,l,m,nからはじめる変数はINTEGER型を暗黙で宣言したのと同じでした。他はREAL型(Cで言うところのfloat)となります。
なのでFORTRANのプログラマーがいちいち型宣言せずに整数型が使えるi,j,kを好んで使ったのです。
ちなみにaではなくiが最初なのはINTEGERだと思われます。iだけで足らなくてj,k,l,m,nと追加されたのでしょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Jimmy

Re: 意味を持たない変数の名前の付け方

#3

投稿記事 by Jimmy » 13年前

おぉ!ありがとうございます。

あとから見たときに意味の分からない変数には名づけないようにします。ご丁寧にありがとうございました。

かずま

Re: 意味を持たない変数の名前の付け方

#4

投稿記事 by かずま » 13年前

数学で、数列、級数、行列を学んだことはありませんか?
例えば、

コード:

  S   =  a  +  a  +  a  + ... + a
   n      1     2     3          n

          n
      =  Σ    a
        i = 1   i
これをプログラムで書くと

コード:

    s = 0;
    for (i = 1; i <= n; i++) s += a[i];
m行 n列の行列の要素を a ij と書きますよね。
このように i, j, m, n は数学で、上記のような場合によく使われます。

だから、その後、コンピュータが発明され、プログラミング言語が作られたとき、
数学の記法をなるべくそのまま使いたいと考えたのは当然のことです。
FORTRAN というのは Formula Translation、すなわち「数式翻訳」という意味です。
n は number(個数)、i は index(添え字) を表しているものと思われます。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: 意味を持たない変数の名前の付け方

#5

投稿記事 by beatle » 13年前

しかしi, jはある程度経験のあるプログラマが見たら、使用している場所にもよるけど「ループのカウンタだな」と想像がつくと思います。
ループカウンタをiにするのは慣習的なことなので、むしろ他の名前にするとコードの可読性が失われるかもしれません。

コード:

for (int studentListIndex = 0; studentListIndex < studentList.size(); ++studentListIndex) {
    studentList[studentListIndex].do_something();
}

コード:

for (int i = 0; i < studentList.size(); ++i) {
    studentList[i].do_something();
}

閉鎖

“C言語何でも質問掲示板” へ戻る