- - PR -
配列の添字が0から始まるメリットは?
«前のページへ
1|2|3|4|5
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-03-10 08:45
MechanicalLifeさんこんにちは。
>0からなのは英語の月は January、February、March、・・・で >getMonth()の値をそのままつかえます。 なるほど。そういうメリットはありますね〜。 ここでも結局、配列が0から始まってるから... ってことにつながるんですね。 | ||||
|
投稿日時: 2005-03-10 12:30
誰かが指摘したように結論はa[i]=*(a+i)で出ちゃってますが、一言。 0から始まる 先頭からの距離=低級言語指向 機械寄り 1から始まる 先頭からの番目=高級言語指向 人間寄り あと、0から起源はALGOLよりさらにアセンブラ、機械語までさかのぼるんじゃ? [ メッセージ編集済み 編集者: ほろりん 編集日時 2005-03-10 12:31 ] | ||||
|
投稿日時: 2005-03-10 13:02
「高級言語」としての起源はそのあたりで打ち止めでしょう。
アセンブラ・機械語っていうのは、全く別の話ですわな。その時代のそのあたり には、そもそも「配列」という概念がないでしょうから。ポインタはあってもね。 | ||||
|
投稿日時: 2005-03-11 10:48
あー、確かに。なにもーろくしてんだろ>あちき。
| ||||
|
投稿日時: 2005-03-13 18:11
unibon です。こんにちわ。
#しつこく書きますが。
年や日が1オリジンなのに、月が0オリジンなのは違和感がありますね。 思い付きですが、ハンガリー記法のような感じで、変数やメソッドの戻り値に「型」があって、0オリジンか1オリジンかを区別できると良いのかもしれません。本来のハンガリー記法の用途(文字列か数値かの区別や、ポインタか否かの区別)は、変数の使い方をざっと見れば区別できるので記法の必要性は感じませんが、0オリジンか1オリジンなのかは、変数の使い方を注意して見ないとなかなか分かりませんので、記法で区別するのはあったほうが良いかもしれません。 for (int orgin0Counter = 0; orgin0Counter < 10; orgin0Counter++) { } とか for (int orgin1Counter = 1; orgin1Counter <= 10; orgin1Counter++) { } みたいに。 しかし、こんな基本的なこと(数をいくつから数え始めるか)こそ、字下げの桁数云々よりも優先してコーディング標準で標準化すべきでしょう。 なお、年月日に比べると時分秒が0オリジンなのは暗に助かっています。たしかに時なら1オリジン(1〜12)の表記も混在してはいますが、0 → 12 になっているだけであり 12 や 24 の modulo を求めるだけで良く、0 → 1 のように 1 ずれるわけではないので。 アナログ時計の文字盤のてっぺんが1から始まって(よって最下部が7になって)いたら、とても困ったでしょう。 | ||||
|
投稿日時: 2005-03-14 09:15
なるほど、確かに「1オリジン」と「0オリジン」は添え字としての変数の型が違うのかもしれませんね。 量や位置を表す「0オリジン」と、順番を表す「1オリジン」 順番int型は、正整数で0はout of rangeなのでしょう。 量・位置int型は、整数なので0を扱うと。 配列の添え字に「順番int型」を使うと「1オリジン」、「量・位置int型」を使うと「0オリジン」という形になると・・・面倒くさいだけだろうな。 (^^; |
«前のページへ
1|2|3|4|5