2

統合する sin または cos を選択する以下のコードがあります。

while( x !=1 || y !=(1||0) ){

      printf("Sin (1) or Cos (0)?\n");    
      x = scanf("%d",&y);
      _flushall();

      if(y==1){
        printf("Sin set\n");
      }
      else if(y==0){
        printf("Cos set\n");
      }
}

しかし

    y!= (1||0)

y == 0 に対して true と評価されることはありません。誰かがここで何が問題なのか説明できますか? ありがとう。

4

3 に答える 3

9

あなたが必要です(y != 1 && y != 0)(または同様に、そこで表現することが本当に何を意味するかによって異なります)。オペランドおよびに||演算子が適用されています。別の言い方をすれば、「やってからやる」という意味です。10y != (1 || 0)(1 || 0)y != result

于 2012-04-27T15:31:33.107 に答える
2

ブール代数を効果的に直接コーディングしようとしていますが、Cは指定された方法でそれを受け入れません。

while( x !=1 || y !=(1||0) )

する必要があります

while( (x!=1) || ( (y!=1) || (y!=0) ) )

Cで余分な括弧を使用することの価値を過小評価しないでください。オプティマイザーは、とにかくより効率的になるようにコードを最適化する可能性があります。

このエラーを生成するコードの部分は、次のように評価されます:LHS(左側)、RHS(右側)

LHS = y
!=(1 || 0)[指定された定義]
!=(1)[b / c(1 || 0)=(1)]

于 2012-04-27T19:31:10.153 に答える
1
y != (0||1)

と同等です

y != 1

以来0||1です1y != 0またはが必要な場合は、2 つの比較が必要になりますy != 1

于 2012-04-27T15:31:36.873 に答える