#include<bits/stdc++.h>
using namespace std;
typedef struct trie
{
int arr[26];
bool isleaf;
trie(int isleaf)
{
this->isleaf=9;
cout<<isleaf<<endl;
isleaf=false;
cout<<isleaf<<endl;
cout<<this->isleaf<<endl;
}
}* tr;
//void inser(s)
int main()
{
tr k=new trie(3);
cout<<k->isleaf;
}
工作正常并输出
3
0
1
1
但是在
#include<bits/stdc++.h>
using namespace std;
typedef struct trie
{
int arr[26];
bool isleaf;
trie(int isleaf)
{
cout<<isleaf<<endl;
isleaf=false;
cout<<isleaf<<endl;
cout<<this->isleaf<<endl;
}
}* tr;
//void inser(s)
int main()
{
tr k=new trie(3);
cout<<k->isleaf;
}
我得到了
3
0
68
68
我明白这是未初始化但仍然为什么68?
如果在全局或内部函数中使用普通bool并打印它而不初始化我得0,那么为什么不在这里呢?
也有人可以指出一些好的来源,以清除对这种变量声明,公共和私人概念,OOPS,结构和类之间的差异等的怀疑。
答案 0 :(得分:0)
[basic.fundamental] / 6
bool
类型的值为true
或false
。 49脚注49)在本国际标准所描述的方式中使用
bool
值作为“未定义”,例如通过检查未初始化的自动对象的值,可能会使其表现得好像它不是{{ 1}}也不true
。
未定义未定义的行为。这是它的长短。讨论为什么展示未定义行为的程序恰好以特定方式表现出来,这是毫无意义的。