簡體   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