提问人:Mich 提问时间:11/7/2023 更新时间:11/8/2023 访问量:76
C #define 与 0 [重复]
C #define with 0 [duplicate]
问:
我有以下代码:
#define HARDW 671 // hardware 3 digits
#define FIRMW 013 // firmware 3 digits
printf("FIRMW %d\r\n", FIRMW);
结果是 11 而不是 13。 你有什么烦恼吗? 如何将定义的字段转换为整数? 注意:我也使用该字段作为字符串,因此我无法删除 0....
此致敬意 密歇根州
答:
5赞
ikegami
11/7/2023
#1
前导零使它成为八进制常数,就像前导使它成为十六进制常数一样,前导使它成为二进制常数(从 C23 开始)。0x
0b
13
产生十三 (1*10+3),int
0x13
产生十九 (1*16+3),int
0b11
产生三个 (1*2+1) [C23],并且int
013
产生 11 (1*8+3)。int
评论
0
#define
printf("FIRMW %03d\r\n", FIRMW);
0
printf("FIRMW %03o\r\n", FIRMW);
FIRMW 018