nHash>0 && pCache->apHash ); ... if( pPage ){ unsigned-6ren">
gpt4 book ai didi

c - Xcode C 代码, "division by zero"分析器问题

转载 作者:行者123 更新时间:2023-12-01 23:45:02 27 4
gpt4 key购买 nike

我有一个 C 文件,在一个函数中包含以下代码片段:

assert( pCache->nHash>0 && pCache->apHash );
...
if( pPage ){
unsigned int h = iKey % pCache->nHash;
...

当我运行 Analyze 时,Xcode 在包含模运算的最后一行抛出逻辑错误 - 除以零。

如果我像这样向 if 添加额外的检查,错误就会消失:

if( pPage && pCache->nHash>0 ){

包含 pCache->nHash>0 的断言不应该避免被零除吗?

最佳答案

断言最常用于开发期间。当您构建最终版本时,您会禁用断言。

话虽如此,断言用于捕获应由开发人员更正/检查的逻辑错误。它们不用作程序逻辑的实际验证。

这解释了为什么您仍然必须添加一个 if 语句来检查您的变量是否大于 0。您的分析器分析您的代码并且很可能会忽略断言,因为您应该在最终构建期间删除它们。

关于c - Xcode C 代码, "division by zero"分析器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29760243/

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