[英]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.