c++ - 如何使 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';
}
}
解决方案
最简单的方法是设置smallest
为最大可能值和largest
最小可能值:
double largest = std::numeric_limits<double>::lowest();
double smallest = std::numeric_limits<double>::max();
如果你真的想让一个变量没有价值,那就是这样std::optional
做的。std::optional<double> largest;
将被初始化为没有任何价值。
推荐阅读
- arrays - 函数返回的数组指针类型
- c - 调用用 C 编写的 Postgres 函数时出现分段错误,导致 Postgres 服务器崩溃
- python - 将 PyGame 指向 Raspberry Pi OS Lite 上的帧缓冲区
- python - 有没有办法远程触发硒程序?(比如从我的手机或另一台笔记本电脑上
- r - 在 ggplot2 中移动图例项本身
- java - Java Mustache 错误:没有名称为“名称”的方法或字段
- python - 编译请求库
- javascript - 是否可以从 react-scripts uglify 获取原始代码?
- python-3.x - 无法识别 WAV 文件的文件结尾
- r-markdown - 编织到 PDF 失败