• ベストアンサー

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になっていました。 どこが間違っているのかどなたか教えてください。

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

  • ベストアンサー
  • tig33
  • ベストアンサー率50% (6/12)
回答No.3

直接の回答ではありませんが、問題をもっと簡明に処理するために、いったん配列の全要素を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)

関連するQ&A

専門家に質問してみよう