这段代码的输出是什么? 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
。配备逐行调试器,阴影效果会很明显。
#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
。配备逐行调试器,阴影效果会很明显。