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