gpt4 book ai didi

c - 发出宏来打印整数的大小和范围

转载 作者:行者123 更新时间:2023-11-30 21:03:47 24 4
gpt4 key购买 nike

如何编写宏来打印任何整数数据类型的大小和范围,而不使用 sizeof 运算符。您能告诉我如何进行吗? 提前致谢。

最佳答案

我认为下面的宏应该对你有帮助。

#define RANGE(type, name)  \ 
{ \
type min=0, max=0, bit=0; \
unsigned int bits=0; \
char *format; \
\
/* measure size of data type in bits */ \
bits=1; \
bit=1; \
while(bit <<= 1) bits++; \
\
/* signed or unsigned */ \
if((type)(1L << (bits-1)) > 0) \
{ \
format = "%lu"; /* unsigned */ \
min = 0; \
} \
else \
{ \
format = "%ld"; /* signed */ \
min = (type) (1L << (bits - 1)); \
} \
\
max = min - 1; /* roll over backwards */ \
printf("%s, %u bits : Range from ", name, bits); \
printf(format , (long)min); \
printf(" to "); \
printf(format , (long)max); \
printf("\n"); \
}

宏的参数为1) 任何整数数据类型2) 字符串格式的数据类型名称

例如

RANGE(unsigned int, "unsigned int");

关于c - 发出宏来打印整数的大小和范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21051377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com