【发布时间】:2016-10-19 09:48:40
【问题描述】:
在 C 中,我如何编写程序来找到整数变量的最大值? 据我所知,整数变量的最大值是 2147483647,但是如何在 C 程序中表示呢?
【问题讨论】:
在 C 中,我如何编写程序来找到整数变量的最大值? 据我所知,整数变量的最大值是 2147483647,但是如何在 C 程序中表示呢?
【问题讨论】:
据我所知,整数变量的最大值是 2147483647
这是一个错误的假设。 int 的最大值可能因系统而异。例如,在 16 位机器上,int 的最大值不是 2147483647。
您不需要自己找到它。您可以从<limits.h> 使用预定义的宏。例如,INT_MAX 表示 int 可以容纳的最大值。
【讨论】:
您无法通过计算以编程方式找到此值。无法检测到您“在最后”,并且递增最大整数具有未定义的行为。
这就是标准库在<limits.h> 标头中向您提供整数类型的最大值和最小值的原因。 您有责任确保操作结果符合所需的类型。
【讨论】:
0x7FFFFFFF 并宣布这是答案。这不是真正的计算。你怎么知道这是最大值?
最大值和最小值在限制中定义。 您可以使用以下代码验证这些。
C版:
#include <stdio.h>
#include <limits.h>
int main()
{
printf("Minimum Int value:%d\n", INT_MIN);
printf("Minimum Int value:%d\n", INT_MAX);
return 0;
}
在 C++ 中
#include "stdafx.h"
#include <iostream>
#include <limits>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Minimum Int value:" << INT_MIN << endl;
cout << "Maximum Int value:" << INT_MAX << endl;
return 0;
}
另一种(非 Visual Studio 版本如下):
#include <iostream>
#include <string>
#include <limits.h>
using namespace std;
int main()
{
std::cout << "Minimum Int value:" << INT_MIN << endl;
std::cout << "Maximum Int value:" << INT_MAX << endl;
}
如果您对其他数据类型的最大值和最小值感兴趣,可以在下面的网站中找到常量名称 E.G INT_MIN 和 INT_MAX。
http://www.cplusplus.com/reference/climits/
【讨论】:
我知道已经晚了,但是如果必须将计算作为赋值,可以使用sizeof() 运算符,这将给出一个整数包含的字节数。
2^((number of bytes*8) - 1) 应该给出一个整数的最大值。
当然sizeof()也是编译时间,就像INT_MAX一样。
【讨论】: