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
问题
我认为上面两个函数的结果应该完全相同,但它会显示不同的结果。
这种差异来自哪里?
答案 0 :(得分:4)
两个函数都没有实际返回值,因此它们都会有未定义的行为。