C语言中*f和(*f)的区别?
Difference between *f and (*f) in C?
CppCheck (v1.72) 表示使用 (*f)
或仅使用 *f
时存在差异。本例
void test(float *f)
{
float a = 0.0f;
if(*f>a)
{
(*f) += 0.01f;
if(*f<a) *f=a;
}
}
cppCheck 说“嵌套 'if' 块中的相反条件会导致死代码块,而
void test(float *f)
{
float a = 0.0f;
if(*f>a)
{
*f += 0.01f;
if(*f<a) *f=a;
}
}
让 cppCheck 开心。到底有什么区别?
没有区别。理想情况下,cppcheck 应该在这两种情况下警告您,因为您的代码不合逻辑。
但是,cppcheck 并非万无一失。不要假设如果 cppcheck 没有显示任何问题,就没有任何问题。它只是另一个有用的工具,可以帮助发现可能无法检测到的错误代码。
感谢您在 Whosebug 上报告此问题。我已经在 cppcheck 的 bug tracker.
上创建了关于此问题的票证
CppCheck (v1.72) 表示使用 (*f)
或仅使用 *f
时存在差异。本例
void test(float *f)
{
float a = 0.0f;
if(*f>a)
{
(*f) += 0.01f;
if(*f<a) *f=a;
}
}
cppCheck 说“嵌套 'if' 块中的相反条件会导致死代码块,而
void test(float *f)
{
float a = 0.0f;
if(*f>a)
{
*f += 0.01f;
if(*f<a) *f=a;
}
}
让 cppCheck 开心。到底有什么区别?
没有区别。理想情况下,cppcheck 应该在这两种情况下警告您,因为您的代码不合逻辑。
但是,cppcheck 并非万无一失。不要假设如果 cppcheck 没有显示任何问题,就没有任何问题。它只是另一个有用的工具,可以帮助发现可能无法检测到的错误代码。
感谢您在 Whosebug 上报告此问题。我已经在 cppcheck 的 bug tracker.
上创建了关于此问题的票证