gpt4 book ai didi

c++ - Stroustrup 书中的前后条件

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:14:31 27 4
gpt4 key购买 nike

在《编程:使用 C++ 的原理与实践》的第 5.10.1 章中,有一个“试试这个”练习,用于调试某个区域的错误输入。前置条件是长度和宽度的输入是否为 0 或负数,而后置条件是检查面积是否为 0 或负数。引用这个问题,“找到一对值,使得这个版本的 area 的前置条件成立,但后置条件不成立。”。到目前为止的代码是:

#include <iostream>
#include "std_lib_facilities.h"

int area (int length, int width) {
if (length <= 0 || width <= 0) { error("area() pre-condition"); }
int a = length * width;
if(a <= 0) { error("area() post-condition"); }
return a;
}

int main() {

int a;
int b;
while (std::cin >> a >> b) {
std::cout << area(a, b) << '\n';
}

system("pause");
return 0;
}

虽然代码似乎有效,但我无法确定哪些输入将使前置条件成功但会触发后置条件。到目前为止,我已经尝试在其中一个输入中输入字符串,但这只是终止程序并尝试查找等于 0 的 ascii,但结果也相同。这应该是某种技巧问题还是我遗漏了什么?

最佳答案

考虑对输入使用较大的值,以便乘法溢出。

关于c++ - Stroustrup 书中的前后条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49778122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com