• ベストアンサー

配列

X= 1,2,3   4,5,6   7,8,9 っていう配列で、 *X[1,2]とか*X[2]とか、どういう意味なんですか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#7858
noname#7858
回答No.2

そもそも、ビルド/コンパイルできないと思うし、 こういうプログラムは書くべきでないと思いますが、 パズルを解くつもりで… 答えは 7 になると思います。 C 言語の配列には x[0,0] というような書き方は無いですが、 「,」がカンマ(コンマ)演算子として評価されるとすると、 x[0,0] のカギ括弧内の最初の2文字「0,」は無いのと等価なので、 以下のような意味になります。 *X[0,0]=1 // *x[0] と同じ => x[0][0] と同じ、答えは 1 *X[0,1]=4 // *x[1] と同じ => x[1][0] と同じ、答えは 4 *X[0,2]=7 // *x[2] と同じ => x[2][0] と同じ、答えは 7 *X[1,0]=1 // *x[0] と同じ => x[0][0] と同じ、答えは 1 *X[1,1]=4 // *x[1] と同じ => x[1][0] と同じ、答えは 4 *X[1,2]=7 // *x[2] と同じ => x[2][0] と同じ、答えは 7 *X[2]=7 // x[2][0] と同じ、答えは 7

その他の回答 (3)

noname#7858
noname#7858
回答No.4

ANo.2 です。 BLUEPIXY さんの言うとおり、 *X も %d もヘンです。 なので確かに、%d のままでは 答えは 7 にはならないですね。 X の初期化もおかしいです。 ※そもそもコンパイル出来ないと思います。 BLUEPIXY さんのサンプルは正しいです。 恐れ入ります。 ただ、実行結果↓は合ってそうなんで(BLUEPIXY さん指摘のとこを修正した場合)、 *X[0,0]=1 *X[0,1]=4 ... 自分で書いたプログラムではなく、 クイズかテストのようなものを書き写したソースなんではと思います。 質問者の意図が   *X[1,2]、*X[2] の意味を知りたい だとすると、2つとも   X[2][0] と解釈されますよ、ということです。 ただし実際にコンパイルして確認したわけではありません。

please-no8
質問者

お礼

ありがとうございました! コンマ演算子ですか、見落としてましたm_ _m おかげですっきりしました^-^

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

char X; で *X することがわかりません。 %dなのに、7って出力されるということもわかりません。 たとえば、次のようであるべきだと思います。 サンプル #include<stdio.h> int main(void){ int i,j; char x[][3] = {{'1','2','3'}, {'4','5','6'}, {'7','8','9'}}; for(i=0;i<3;i++) for(j=0;j<3;j++) printf("x[%d][%d]=%c\n",i,j,x[i][j]); return(0); }

please-no8
質問者

お礼

ごめんなさい・・・補足間違ってました。。。 でも理解できました!ありがとうございます!!!

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

まず、言語は、なんですか。 CでもC++でもなさそうですが。

please-no8
質問者

補足

C言語です、すみません。 #include<stdio.h> int main(void){ char X ={{'1','2','3'}, {'4','5','6'}, {'7','8','9'}}; printf("%d\n",*x[1,2]); } で、出力はなぜ7なのか。ということです。 *X[0,0]=1 *X[0,1]=4 *X[0,2]=7 *X[1,0]=1 *X[1,1]=4 *X[1,2]=7 *X[2]=7

関連するQ&A