Gre*_*osz 308
在C++中:
#include <limits>
Run Code Online (Sandbox Code Playgroud)
然后用
int imin = std::numeric_limits<int>::min(); // minimum value
int imax = std::numeric_limits<int>::max();
Run Code Online (Sandbox Code Playgroud)
std::numeric_limits
是一个模板类型,可以用其他类型实例化:
float fmin = std::numeric_limits<float>::min(); // minimum positive value
float fmax = std::numeric_limits<float>::max();
Run Code Online (Sandbox Code Playgroud)
在C:
#include <limits.h>
Run Code Online (Sandbox Code Playgroud)
然后用
int imin = INT_MIN; // minimum value
int imax = INT_MAX;
Run Code Online (Sandbox Code Playgroud)
要么
#include <float.h>
float fmin = FLT_MIN; // minimum positive value
double dmin = DBL_MIN; // minimum positive value
float fmax = FLT_MAX;
double dmax = DBL_MAX;
Run Code Online (Sandbox Code Playgroud)
小智 27
我知道这是一个老问题,但也许有人可以使用这个解决方案:
int size = 0; // Fill all bits with zero (0)
size = ~size; // Negate all bits, thus all bits are set to one (1)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我们的结果为-1,直到size为signed int.
size = (unsigned int)size >> 1; // Shift the bits of size one position to the right.
Run Code Online (Sandbox Code Playgroud)
正如标准所说,如果变量有符号且为负,则移入的位为1,如果变量为无符号或有符号且为正,则移位为0.
由于大小是有符号且为负的,我们会将符号位移位1,这没有多大帮助,因此我们转换为无符号整数,强制转换为0,将符号位设置为0,同时让所有其他位保持为1.
cout << size << endl; // Prints out size which is now set to maximum positive value.
Run Code Online (Sandbox Code Playgroud)
我们也可以使用掩码和xor但是我们必须知道变量的确切位数.随着位前移,我们不必随时知道int在机器或编译器上有多少位,也不需要包含额外的库.
小智 15
#include <climits>
#include <iostream>
using namespace std;
int main() {
cout << INT_MAX << endl;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
264747 次 |
最近记录: |