【发布时间】:2020-12-03 13:26:50
【问题描述】:
我有一个 int32_t 号码,我需要检查它是否适合 int8 和 in16 但是当我尝试时:
if (number ==(int32_t)((int8_t) number)) {
printf("%s %d\n","8", number);
} else if (number ==(int32_t)((int16_t) number)){
printf("%s %d\n","16", number);
编译器说第一个 if 语句总是正确的,但我不知道如何以其他方式做到这一点,只使用“==”和像 > 这样的位操作。和
【问题讨论】:
-
如果 m 位值的高位 m - n 位为零,您可以检查 m 位值是否适合 n 位。
-
@e2-e4 是 c 语言
-
if(number >= INT8_MIN && number <= INT8_MAX) -
@MichaelPalichTerentev 问题中的代码正是我的做法。您能否显示确切的警告文本,并说明您使用的是什么编译器?
-
@MichaelPalichTerentev 您的代码看起来不错,对我来说效果很好。