如何使用整数工作添加十六进制值?

shw*_*ink -3 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'
}
Run Code Online (Sandbox Code Playgroud)

有人能让我知道这里发生了什么事吗?

Chr*_*aes 7

前导零表示该数字以八进制表示.八进制中的015是十进制表示法中的13.

八进制文字是数字零(0)后跟零个或多个八进制数字(0,1,2,3,4,5,6,7)

(来自cppreference)