- ベストアンサー
配列
X= 1,2,3 4,5,6 7,8,9 っていう配列で、 *X[1,2]とか*X[2]とか、どういう意味なんですか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
そもそも、ビルド/コンパイルできないと思うし、 こういうプログラムは書くべきでないと思いますが、 パズルを解くつもりで… 答えは 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)
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] と解釈されますよ、ということです。 ただし実際にコンパイルして確認したわけではありません。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
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); }
お礼
ごめんなさい・・・補足間違ってました。。。 でも理解できました!ありがとうございます!!!
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
まず、言語は、なんですか。 CでもC++でもなさそうですが。
補足
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
お礼
ありがとうございました! コンマ演算子ですか、見落としてましたm_ _m おかげですっきりしました^-^