我想将用户可以输入的最小值限制为最大流大小减去高阶位,以防止溢出。如果我对允许的位大小进行硬编码,这将很容易,但我想利用用户系统并使其更具动态性。那么,如何从最大流长度中减去最高位?
这是我到目前为止所拥有的:
// Get a decimal number from user and validate number entered
while((cout << "Enter decimal number: ") && !(cin >> number)){
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "Invalid input. Try again\n";
}
我想我需要为最小值添加另一个测试,如下所示:
while((cout << endl << "Enter decimal number: ") && !(cin >> number) && !(number >= -numeric_limits<streamsize>::max())){
但是以某种方式减去最高位numeric_limits<streamsize>::max()
在我的情况下,这将是第 31 位,但对于不同机器上的人来说可能会有所不同。
谢谢您的帮助。