我想问,在这段将二进制数转换为十进制数的代码中,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;
}发布于 2012-10-30 22:50:09
bin - '0'将bin的ASCII值转换为其整数值。给定bin = '1'、bin - '0' = 1
发布于 2012-10-30 22:51:41
这段代码利用了这样一个事实,即C++字符实际上只是特殊的int。它使用getchar接受一个'0‘或'1’的字符。现在它需要将其转换为0或1(请注意,这些是数字,而不是字符)。假设char '0‘是' 1’之前的一个字符,从两者中减去char '0‘的值会把'0’变成0,把'1‘变成1。
'0' - '0' = 0
'1' - '0' = 1https://stackoverflow.com/questions/13141542
复制相似问题