C语言中0x30是什么意思
main()
{char a,b,c;
int d;
printf("Please input three number:");
scanf("%c%c%c",&a,&b,&c);
a=a-0x30;
b=b-0x30;
c=c-0x30;
d=a*100+b*10+c;
printf("%d",d);
}
其中 0x30 有什么作用啊,为什么这样 ,这题就是要求输入字符任意数,输出数字任意数 展开
C语言中的0x30是十六进制数,表示的十进制数为48,其计算方法是3*16+0*1=48。
C语言中以0x开头的数字表示十六进制数,由0~9及a~f(包括大写A~F,大写与小写对应)这十六个字符来表达,其中a~f对应表达10~15。
相应的C语言中的八进制以0开头接0~7的数字表达。
扩展资料:
十六进制转换为十进制:
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方,依次继续。
所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
参考资料来源:百度百科-十六进制数
参考资料来源:百度百科-十六进制至十进制转换
C语言中0x30是十六进制数,转化为十进制数为3*16+0*1=48。
十六进制数的基数是16,采用的数码是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中A-F分别表示十进制数字10-15.十六进制数的技术规则是“逢十六进一”,它的各位的权是以16的N次方标识的。
通常,对十六进制数的表示,可以在数字的右下角标注16或H,但在C语言中是在数的前面加数字0和字母X即0X来表示。例如,12AF在C语言中表示为0X12AF。
扩展资料:
十六进制转换为十进制:
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方,依次继续。
所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
参考资料来源:百度百科-十六进制数
参考资料来源:百度百科-十六进制至十进制转换
C语言中以0x开头的数字表示十六进制数,由0~9及a~f(包括大写A~F,大写与小写对应)这十六个字符来表达,其中a~f对应表达10~15。
相应的C语言中的八进制以0开头接0~7的数字表达。
因为你输入的a,b,c是char格式的,也就是ASCII码,而在ASCII码里“0”是48,“1”是49,所将a减去0x30(十六进制的30,也就是十进制的48),刚好能对应阿拉伯数字。