这段代码的输出是什么? C++

what will bw the output of this code? c++

#include <iostream>

using namespace std;


int f(int i){
  int k=0;
  if(i>0)
    {
        int k=i*10;
    }
    else {
        int k= i++;
    }
    cout <<k;
    return i;
}


int main()
{
    cout << f(1);
    cout << ".";
    cout << f(0);

    return 0;
}

这是代码,编译器显示“01.01”,我很不明白,非常欢迎任何帮助!

int k = i * 10;int k = i++;k 的声明 shadow 外部 k。因此,外部作用域中的语句 std::cout << k; 始终输出零。

if 主体的唯一作用是将 i 增加 1。只有当 i 为零(或更小)时才会这样做。 i 的值被打印出来。

因此输出为01.01。配备逐行调试器,阴影效果会很明显。