我想测试一个输入变量的值是否传递了一个字节大小,或者知道我是否写了这段代码
{
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进行比较。
答案 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