比较cint

时间:2018-06-06 12:51:03

标签: c++ compare uint8t uint16

我想测试一个输入变量的值是否传递了一个字节大小,或者知道我是否写了这段代码

{
    uint8_t x;
    cout << " enter x" << endl;
    cin  >> hex >> x;
    cout << hex << x;
    uint8_t y ;  
    y = x >> 4 ;
    cout << hex << y;
    if ( y == 0 )
    {
        cout << " succes, coorect value for x";
    }
    if (y >  0)
    {
        /*here i supoosed that x = 0xfff and when shifting, y would be 0xff but y is uint8 so it's just for compare
        std::cout << "fail, ";
    }
    return 0;
}

我想知道如何测试用户是否在uint8中输入两个或更多字节。 并告诉他重新输入一个字节的值。这就是为什么我试图将uint8_t与uint16_t进行比较。

2 个答案:

答案 0 :(得分:0)

上述代码的问题在于您正在negative中测试unsigned integer值。 if(y < 0)部分始终为false。

现在,根据我的理解,您希望过滤大于1Byte的值。您知道,对于给定的byte,您有2^8 - 1个值范围,也就是说,无符号数位于[0-255]范围内。因此,您的问题简化为简单检查,即if the input value is greater than 255, throw away that input。 (Ofc你必须检查< 0值)

还有其他解决方案,但没有任何背景,我无法提供准确的答案。希望上述简化有所帮助。

答案 1 :(得分:0)

为了检查某个值是否属于小类型,您必须先将其分配给更大的类型。您根本无法使用小型本身进行检查,因为它永远不会包含您想要检查的太大的值。

config.ru