繁体   English   中英

在C中打印定义的整数

[英]Printing defined integers in C

我在C中定义了一个整数

#define FOO_VERSION 04042012

当我将其传递给类似这样的函数时:

unsigned int version = FOO_VERSION;
bar(version);

传递的实际值为1065994。我使用GBD进行了验证,将变量版本打印出来,并通过将定义打印出来:'FOO_VERSION'

我的问题是造成这种情况的原因,除非发生某种我不知道的类型转换,否则我看不出任何原因吗?

04042012是一个八进制(基数8)整数常量,因为它的04042012为0。将其删除以定义一个十进制(基数10)整数:

#define FOO_VERSION 4042012

0开头的文字整数是C中的八进制。

因此04042012 (基数8)是1065994 in(基数10)。

0开头的文字以0为底

#define FOO_VERSION_8 04042012 // base 8
#define FOO_VERSION 4042012 // base 10

您可以使用printf()打印额外的零

printf("Version %08d\n", FOO_VERSION); // prints 04042012
//               ^

以0开头的整数是C中的八进制符号。

04042012是以8为底的,没有任何前导符号是10是底的。

您可能还会发现有趣的是,前导0x是十六进制(基数16)。

所以0x10将是16位小数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM