2

可能重复:
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

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'

是真或假,操作将返回 (1:0) 的左侧为真,右侧为假。

这些值可以是任何东西。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

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

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

于 2012-05-15T00:04:19.333 回答