为什么这两个相同的功能不同?

时间:2018-03-12 09:20:00

标签: c

IDE

Visual Studio 2017

主要

int cnt = 0;
int main(int argc, char** argv)
{
    cnt = func(4);
    printf("%d", cnt);
}

功能A

int func(int num)
{
    if (num < 2)
    {
        cnt += num;
        return cnt;
    }

    func(num / 2);

    cnt += num % 2; <<<
}

结果

  

1

功能B

int func(int num)
{
    if (num < 2)
    {
        cnt += num;
        return cnt;
    }

    func(num / 2);

    if (num % 2) cnt++; <<<
}

结果

  

0

问题

我认为上面两个函数的结果应该完全相同,但它会显示不同的结果。

  

这种差异来自哪里?

1 个答案:

答案 0 :(得分:4)

两个函数都没有实际返回值,因此它们都会有未定义的行为。