为什么这段代码的输出是0 10 10.在第一种和第三种情况下,变量v没有值?
#include <iostream>
using namespace std;
void f(bool val)
{
int v;
if(val)v=10;
cout<<v<<endl;
}
int main() {
f(false);
f(true);
f(false);
return 0;
}
答案 0 :(得分:1)
因为当val = false
不满足此条件if(val)
时,将打印出未初始化的变量v
。
那时v
的值可以是0,最后一个值或其他任何值。这是未定义的。
答案 1 :(得分:0)
int v
只声明v
变量,但不为其赋值,因此其值未定义,它将与内存中的当前值相同。
您可以在声明时指定v
初始值,喜欢int v = 0
,因此当val
为false时,v
将始终为0
。< / p>
答案 2 :(得分:0)
您的答案可能会有x 10 x
,其中x
可以是任意数字。实际上,这是垃圾价值。您将在不同平台上的不同编译器中获得不同的值。
某处你会得到0 10 10
,因为它会缓冲v的值。但是其他地方会得到10 10 10
因为它在编译时缓冲了值。所以,说x的价值是不正确的。
因此,您应该说答案为x 10 x
,其中x
是垃圾值。
答案 3 :(得分:-3)
答案是 10 10 10 您需要在if条件语句中比较val的值以获得不同的答案。它在if语句中取v的值,因为没有比较。 试试其他编译器。