#include <stdio.h>
#include <stdlib.h>
#define SIZEOF(arr) (sizeof(arr) / sizeof(arr[0]))
#define PrintInt(expr) printf("%s:%d\n",#expr,(expr))
int main()
{
/* The powers of 10 */
int pot[] = {
0001,
0010,
0100,
1000
};
int i;
for(i=0;i<SIZEOF(pot);i++)
PrintInt(pot[i]);
return 0;
}以下代码的输出为
波蒂:1 波蒂:8 波蒂:64 波蒂:1000
为什么会有这样的输出?
发布于 2014-08-08 17:13:12
在C中以0位为前缀的数字文字将在八进制中输出,这是一个基本的8位数字系统。
10月(1)=12月(1)
10月(10)=12月(8)
10月(100)=12月(64)
你的数字就是从这里来的。
FYI,十六进制文字以0x为前缀,二进制文字以0b (IIRC)为前缀。
编辑:要真正回答你的问题,只需从数字中去掉前导零,它就会给你想要的输出。
发布于 2014-08-08 17:13:22
以零开头的数字文字被解释为八进制-基数8。所以前三个数字是八进制1,10和100 (基- 10是1,8和64 );最后一个数字是基数10。
https://stackoverflow.com/questions/25208682
复制相似问题