根据没有 if 语句的值打印为十六进制 (0x) 或十进制 - 如何?

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

我正在尝试打印一个整数,其格式应为 %d 十进制,除非其值为 FFFF,在这种情况下,应将其打印为 0xFFFF。如果没有不必要的 if 和 else 语句,我无法做到这一点。是否可以在单个 printf 语句中执行此操作?也许使用宏?有什么指点吗?

int d;

if(d==0xFFFF) {
    printf("%X",d);
} else {
    printf("%d",d);
}
c macros hex printf format-specifiers
1个回答
0
投票

希望这是好奇心,而不是家庭作业:

int main(void) {

    for( int e = 0xFFFE; e < 0x10002; e++ )
        printf( "%d\n\0%X\n" + ((e == 0xFFFF)<<2), e );

    return 0;
}

结果:

65534
FFFF
65536
65537
© www.soinside.com 2019 - 2024. All rights reserved.