这是做什么的?

时间:2012-05-14 23:59:20

标签: c binary

  

可能重复:
  The ternary (conditional) operator in C

这是我老师协助的代码示例。我不清楚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 个答案:

答案 0 :(得分: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 )

答案 1 :(得分:1)

它类似于if语句。 取决于条件

n=='1'

为true或false,操作将返回(1:0)左侧为true,右侧为false。

价值观可以是任何东西。 1和0在这里是随机的。

if (n == '1') {
   return 1;
}
else {
   return 0;
}

答案 2 :(得分:0)

此处的条件运算符执行此操作:“如果n等于1,则使用1,否则使用0”。因此它会根据n的值为第一个表达式添加1或0。

这是编写if / else语句的另一种方法。

答案 3 :(得分:0)

这个表达式“(n =='1'?1:0)”相当于if ( n == '1') return 1; else return 0; 如上所述,它是C中的三元(条件)运算符。

我猜你的代码正在加载,然后将二进制字符串“0001010”转换为整数。