- ベストアンサー
Cでの論理演算子
行列要素を入力するとき0要素が多いのでまとめて0と書きたいと思っています。たとえば、A[i](i=1~10)でi=1,2,3以外でA[i]=0と書きたいとき、 for(i=1;i<11;i++){ if(i!=(1||2||3)) A[i]=0 } と書いたのですが、実行してA[i]を表示させるとすべてのA[i]が 0になっていました。 どこが間違っているのかどなたか教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
直接の回答ではありませんが、問題をもっと簡明に処理するために、いったん配列の全要素を0で初期化するという方が一般的です。 #define AMAX (10) int A[AMX]; int main() { int i; for(i=0; i<AMX; i++) { A[i] = 0; } //以降に、必要な要素を設定する(以下は、例です) A[1] = 1; A[2] = 13; A[3] = 38; return(0); }
その他の回答 (3)
- koko_u_
- ベストアンサー率18% (459/2509)
回答No.4
0 で初期化するなら int A[10] = {0}; で十分ですね。
- auty
- ベストアンサー率58% (284/486)
回答No.2
・ 論理演算子||の使い方が間違っているようです。 if(i!=(1||2||3)) A[i]=0 ではなく if( !( i==1 || i==2 || i==3 ) ) A[i]=0; または if( ( i!=1 && i!=2 && i!=3) ) A[i]=0; としてください。
- koko_u_
- ベストアンサー率18% (459/2509)
回答No.1
>どこが間違っているのかどなたか教えてください。 ココ i!=(1||2||3)