gpt4 book ai didi

c++ - Assert() - 它有什么用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:08 26 4
gpt4 key购买 nike

我不明白 assert() 的用途。

我的讲师说 assert 的目的是发现错误。

例如:

double divide(int a , int b ) 
{
assert (0 != b);
return a/b;
}

以上断言是否合理?我认为答案是肯定的,因为如果我的程序不应该与 0(数字零)一起使用,但不知何故零确实进入了 b 变量,然后代码出了问题。

我说得对吗?

你能给我一些关于 justified assert() 的例子吗?

问候

最佳答案

assert 用于验证如果程序正确。 assert 在您的示例中是否合理取决于 divide 的规范:如果 b != 0 是前提条件,那么 assert 通常是验证它的首选方式:如果有人在不满足前提条件的情况下调用函数,这是一个编程错误,你应该用极端终止程序偏见,尽可能少做额外的工作。 (通常。有些应用程序不是这种情况,而有些情况是这样最好抛出一个异常,然后跌跌撞撞,希望最好。)但是,如果 divide 的规范定义了 b 时的某种行为
== 0
(例如 return +/-Inf),那么你应该实现这个而不是使用断言。

另外,也可以关闭 assert,如果事实证明它需要太多的运行时间。然而,一般来说,这应该只在代码的关键部分,并且仅当探查器显示您真的需要它。

FWIW:与您的问题无关,但您发布的代码将为 divide( 1, 3 ) 返回 0.0。不知何故,我不认为这是你想要什么。

关于c++ - Assert() - 它有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12161998/

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