C 如何将十六进制值与整数相加?
在下面的代码中,变量“b”保存值“133”,这是非常直接的。变量‘a’呢?为什么是‘131’ 我看到唯一的区别是“015”而不是“15”C 如何将十六进制值与整数相加?,c,hex,literals,C,Hex,Literals,在下面的代码中,变量“b”保存值“133”,这是非常直接的。变量‘a’呢?为什么是‘131’ 我看到唯一的区别是“015”而不是“15” #include<stdio.h> int main() { int a,b,c; a=015 + 0x71 +5; printf("%d\n",a); // prints '131' b=15 + 0x71 +5; printf("%d\n",b); // prints '133' } #包括 int main() {
#include<stdio.h>
int main()
{
int a,b,c;
a=015 + 0x71 +5;
printf("%d\n",a); // prints '131'
b=15 + 0x71 +5;
printf("%d\n",b); // prints '133'
}
#包括
int main()
{
INTA、b、c;
a=015+0x71+5;
printf(“%d\n”,a);//打印'131'
b=15+0x71+5;
printf(“%d\n”,b);//打印'133'
}
有人能告诉我这里发生了什么吗?前导零表示数字以八进制表示。八进制的015是十进制的13 八进制文字是数字零(0)后跟零个或多个八进制数字(0、1、2、3、4、5、6、7)
(from)
015
实际上是八进制数字系统表示的指示器,所以
015
表示1x8^1+5*8^0=13
所以
严格地说,这意味着
(1*(8^1)+5*(8^0))+(7*(16^1)+1*(16^0))+(5*(10^0))=133
在这种情况下提到了strtol
。八进制整数常量与所说的标准库函数无关。@user694733你是对的,我修改了它。十六进制=base 16=0x{9-9A-Fa-f_234;+
,每个“数字”代表4位,八进制=base 8=0[0-7_234;+
,每个数字代表3位。015是八进制。十六进制在计算机历史上赢得了胜利。
a=015 + 0x71 +5;