我的问题与以下代码有关,它是一个经典的教科书示例:
#include <iostream>
#include <limits>
int main()
{
int min{std::numeric_limits<int>::max()}; ///These two limits
int max{std::numeric_limits<int>::min()};
bool any(false);
int x;
while (std::cin >> x)
{
any=true;
if (x<min)
min = x;
if (x)
max=x;
}
if (any)
std::cout << "min = " << "\nmax = " max << '\n';
}
另外,我很想知道如何访问与我在上面的评论中提到的两个限制相关的文档。这是否会包含在C标准库中?
或者可以在输入/输出流库的文档中找到它?在cplusplus.com的限制库中,开发人员提到min = 0,但是如何定义最大值?在什么是定义最大值和int可以在任何C ++程序中具有的参数?
答案 0 :(得分:0)
http://en.cppreference.com/w/cpp/types/numeric_limits http://www.cplusplus.com/reference/limits/numeric_limits/
这两个链接将引导您获得有关C ++标准库中数值限制的文档。
“min()”不是“零”,它是可能的最低值,具体取决于您使用的类型。对于int
,该值是最低的负数INT_MIN
(可能是–2147483648
),而不是零。但是,对于unsigned
类型,它为零。
对于某些类型,这可能意味着所有位都设置为0
,从而为您提供尽可能低的值。对于其他类型,它并不那么简单。
“max()”是类型可以存储的最高可能值。对于某些数据类型,它只是意味着所有位都设置为1
,为您提供尽可能高的值。对于其他类型,它并不那么简单,但结果始终是类型可以存储/表示的最高可能值。
对于int
,最高可能值为INT_MAX
,最有可能为2147483647
。
通过你的代码并逐步解释发生了什么,因为不同的输入值感觉超出了范围,这里,听起来像我正在为你做作业。您应该尝试代码并查看会发生什么。