我想问一下,这段代码中的bin-'0'
意味着将二进制数转换为十进制数。感谢。
#include <stdio.h>
#include <stdlib.h>
int main(){
char bin;
int dec = 0;
printf("Binary: \n");
bin = getchar();
while((bin != '\n')){
if((bin != '0') && (bin != '1')){
printf("Wrong!\n");
return 0;
}
printf("%c",bin-'0'); // ?
dec = dec*2+(bin-'0'); // ?
bin = getchar();
}
printf("Decimal: %d\n", dec);
return 0;
}
答案 0 :(得分:4)
bin - '0'
将bin的ASCII值转换为整数值。给定bin = '1'
,bin - '0' = 1
答案 1 :(得分:1)
这段代码充分利用了C ++字符真的只是特殊的内容。它使用getchar接收一个'0'或'1'的char。现在它需要将其转换为0或1(注意这些是数字,而不是字符)。鉴于char'0'是'1'之前的一个,从两者中减去char'0'的值将把'0'变为0,将'1'变为1。
'0' - '0' = 0
'1' - '0' = 1