2

重複の可能性:
Cの3項(条件付き)演算子

これは私の先生の援助によるコード例です。何をするのか分かりtotal = total*2+ (n=='1'? 1:0);ません。合計に2を掛けると思いますが、疑問符と1:0比率はどうなっているのでしょうか。

int bcvt(FILE *infile){
  char n;
  int i, total=0;
  for(i=0; i<32; i++){    
    fscanf(infile, "%c", &n);
    total = total*2+ (n=='1'? 1:0);
  }
  char dummy;
  fscanf(infile, "%c", &dummy);
  return total;
}
4

4 に答える 4

3

ステートメント

(n=='1'? 1:0)

と同等です

if ( n == '1' ) return 1
else return 0

したがって、n が「1」の場合は 1 を返し、それ以外の場合は 0 を返します。

形式は次のとおりです。

( expression ? if-true-return-this-value : else-return-this-value )
于 2012-05-15T00:03:46.840 に答える
1

if 文に似ています。状態かどうかによる

n=='1'

が true または false の場合、操作は true の場合は (1:0) の左側を返し、false の場合は右側を返します。

値は何でもかまいません。ここでは 1 と 0 はランダムです。

if (n == '1') {
   return 1;
}
else {
   return 0;
}
于 2012-05-15T00:03:26.917 に答える
0

ここでの条件演算子は、「n が 1 に等しい場合は 1 を使用し、そうでない場合は 0 を使用します」ということを行います。したがって、n の値に基づいて最初の式に 1 または 0 が追加されます。

if/else ステートメントを記述する別の方法です。

于 2012-05-15T00:03:31.987 に答える
0

if ( n == '1') return 1; else return 0; この式 "(n=='1'? 1:0)" は、前述のとおり、C の三項 (条件付き) 演算子と同等です。

そして、あなたのコードがロードされ、バイナリ文字列「0001010」が整数に変換されていると思います。

于 2012-05-15T00:04:19.333 に答える