如何检查int32_t数是否适合int8_t和int16_t?
我有一个 int32_t 号,我需要检查它是否适合 int8 和 in16,但是当我尝试时:
if (number ==(int32_t)((int8_t) number)) {
printf("%s %dn","8", number);
} else if (number ==(int32_t)((int16_t) number)){
printf("%s %dn","16", number);
编译器说第一个 if 语句总是正确的,但我不知道如何以其他方式做到这一点,只使用“==”和诸如 << >> 之类的位操作。和 <stdint.h>。
回答
从 C++ 20 开始,您可以这样做:
std::in_range<std::int8_t>(-1)
看这里