我正在尝试打印一个整数,其格式应为 %d 十进制,除非其值为 FFFF,在这种情况下,应将其打印为 0xFFFF。如果没有不必要的 if 和 else 语句,我无法做到这一点。是否可以在单个 printf 语句中执行此操作?也许使用宏?有什么指点吗?
int d;
if(d==0xFFFF) {
printf("%X",d);
} else {
printf("%d",d);
}
希望这是好奇心,而不是家庭作业:
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