如何检查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)

看这里


以上是如何检查int32_t数是否适合int8_t和int16_t?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>