首页 > 解决方案 > 如何使 C++ 中的值未定义?

问题描述

我正在开发一个将数字作为输入的小程序,检查它是否大于变量largest并检查它是否小于变量smallest。这些变量应该跟踪到目前为止输入的最大值和最小值。

唯一的问题是两个值都开始保存垃圾值,所以我尝试将两者都分配为零,但是当我这样做时程序会中断,因为当我输入 5 时,它应该是最大值和最小值,但 C++ 分配零到最小值。

#include<iostream>

int main() {
    double a, largest, smallest;
    while (std::cin >> a) { 
        if (largest < a)
            largest = a;
         if (smallest > a)
            smallest = a;

        std::cout << "The smallest so far: " << smallest <<'\n';
        std::cout << "The largest so far: " << largest << '\n';
    }
}

标签: c++

解决方案


最简单的方法是设置smallest最大可能值和largest最小可能值:

double largest = std::numeric_limits<double>::lowest();
double smallest = std::numeric_limits<double>::max();

如果你真的想让一个变量没有价值,那就是这样std::optional做的。std::optional<double> largest;将被初始化为没有任何价值。


推荐阅读