结构变量查询

时间:2017-06-29 13:14:17

标签: c++ class c++11 struct

#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,结构和类之间的差异等的怀疑。

1 个答案:

答案 0 :(得分:0)

  

[basic.fundamental] / 6 bool类型的值为truefalse 49

     

脚注49)在本国际标准所描述的方式中使用bool值作为“未定义”,例如通过检查未初始化的自动对象的值,可能会使其表现得好像它不是{{ 1}}也不true

未定义未定义的行为。这是它的长短。讨论为什么展示未定义行为的程序恰好以特定方式表现出来,这是毫无意义的。