这是我老师协助的代码示例。我不清楚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;
}
答案 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”转换为整数。