我正在尝试一些不同的初始化变量的方法。
int a(0);
cout<<a;
此代码段的输出是0
.
a
以另一种方式,我初始化0
int a= int();
cout<<a;
output: 0
然后我试试这个:
int a(int());
cout<<a;
这次的输出是1
实际上 int() 函数返回的值是多少? 0
或者1
我正在尝试一些不同的初始化变量的方法。
int a(0);
cout<<a;
此代码段的输出是0
.
a
以另一种方式,我初始化0
int a= int();
cout<<a;
output: 0
然后我试试这个:
int a(int());
cout<<a;
这次的输出是1
实际上 int() 函数返回的值是多少? 0
或者1
我认为您的最后一次尝试 ( int a(int())
) 是“最令人烦恼的解析”的一个示例。因此,a
是一个函数,而不是一个 int。
这个:
#include <typeinfo>
std::cout << typeid(a).name() << std::endl;
产量:
FiPFivEE
把这个结果放在这里给出:
int ()(int (*)())
这样做int()
会创建一个临时整数并对其进行值初始化。没有特定值的初始化整数的值将为零。所以声明
int a = int();
value 初始化一个临时整数,并将其复制到a
.
但是对于第三个示例,正如许多人所指出的那样,您实际上声明了一个名为a
.