C #define with 0

问题描述 投票:0回答:1

我有以下代码:

#define HARDW 671                  // hardware 3 digits
#define FIRMW 013                  // firmware 3 digits
printf("FIRMW %d\r\n", FIRMW);

结果是 11 而不是 13。 你有什么解释吗? 如何将定义的字段转换为整数? 请注意,我也将该字段用作字符串,因此无法删除 0....

致以诚挚的问候 密歇根

c preprocessor
1个回答
2
投票

前导零使其成为八进制常量,就像前导

0x
使其成为十六进制常数一样。

  • 13
    产生
    int
    十三个。
  • 0x13
    产生
    int
    十九个。
  • 013
    产生
    int
    十一个。
© www.soinside.com 2019 - 2024. All rights reserved.