k=017printf("%d\n",++k)为什么k是16
017 是 8进制数, 对应的十进制数是 1*8 + 7 = 15, 所以 ++k 输出 16
c语言中 0 开头的数为8进制数,8机制数 包含 0~7 ; 0x 或 0X 开头的数为16进制,16进制数包含 0~9 和 A~F
0~7
0~9 和 A~F
c语言里,以数字0开始表明该数字是八进制,编译器会把数字首部为0的数当做八进制的数,017的意思是“八进制下的17”,将八进制数17转换成十进制数:1*8^1+7*8^0=15。