重新声明变量会导致计算错误

问题描述 投票:0回答:1

我正在寻找 VS Pro 2022 编译的旧 C++ Win32 程序中的计算错误。 发现问题是由以下代码引起的,该代码总是产生零结果:

double dMetalFrameR = 0.0;
if (m_dMetalDoorK)
    double dMetalFrameR = m_dMetalDoorX / m_dMetalDoorK;

删除重新声明后,它就可以正常工作了:

double dMetalFrameR = 0.0;
if (m_dMetalDoorK)
    dMetalFrameR = m_dMetalDoorX / m_dMetalDoorK;

重新声明显然是错误的,但为什么结果总是为零?

我本来期望编译器发出警告,但计算是正确的。

c++ math winapi double
1个回答
0
投票

假设该函数末尾有一个

return dMetalFrameR;
,那么结果始终是
0.0
,因为该变量从未改变其初始值。

这个,不正确,代码:

double dMetalFrameR = 0.0;
if (m_dMetalDoorK)
    double dMetalFrameR = m_dMetalDoorX / m_dMetalDoorK;

创建一个同名的新变量,然后在

if
语句超出范围时丢弃它。

© www.soinside.com 2019 - 2024. All rights reserved.