fn get_min_max(t: u8) -> String {
let string: String = format!(
"i{t} min:{:?},max:{:?} ;u32 min:{:?},max:{:?}",
t,
i(t)::MIN,
i(t)::MAX,
u(t)::MIN,
u(t)::MAX
);
string
}
1
共 3 条评论, 1 页
评论区
写评论首先t的取值范围很小,只有8,16,32,64,128,所以完全可以硬编码到一个表里,最后查表 其次,u系列范围永远是
0
-(1<<t)-1
,i系列范围永远是-(1<<(t-1))
-(1<<t)-1
所以也可以直接算出来,非得现场编译有点舍本逐末感觉这个是伪需求 姑且认为这个u8代表数据类型的位数,从语言本身角度讲,不加别的东西的话,如果不想硬编码的话就得考虑在运行时算出来; 不过楼主的写法像是在试图从位数转换为对应数据类型,真的有从语言层面支持这种特性的脚本语言吗😂