c语言输出类代码求解

为什么输出的是301,14 谢谢
#include <stdio.h>

int main(void) {
int x=301;
int y=016;
printf("%2d,%2d",x,y);
return 0;
}

int y=016;
016是以0开头,表示八进制16,八进制的16转化为十进制就是14(即1 *8^1 + 6 *8^0 = 8+6 = 14)

  • 十进制:除表示正负的符号外,以1 ~9开头,由0 ~9组成。如,128,+234,-278。
  • 八进制:以0开头,由0~7组成的数。如,0126,050000.
  • 十六进制:以0X或0x开头,由0 ~9,A ~F或a ~f 组成。如,0x12A,0x5a000.

    img

10开头的是八进制,016即为十进制的8+6为14所以输出为14