C++ 为什么这段代码的输出是3? (结构)
C++ Why is the output of this code 3? (structs)
有人可以帮助我逐步理解为什么以下 C++ 代码输出 3 吗?
#include <iostream>
using namespace std;
struct sct
{
int t[2];
};
struct str
{
sct t[2];
};
int main() {
str t[2] = { {0,2,4,6}, {1,3,5,7} };
std::cout << t[1].t[0].t[1];
}
t[1]
是 {1,3,5,7}
。
str
在内存中表示为四个背靠背的整数,组织成 2 个 sct
结构。在这种情况下,第一个包含值 1 和 3,而第二个包含 5 和 7。
因此,t[1].t[0]
是{1,3}
,所以t[1].t[0].t[1]
是3。
str t[2] = { {0,2,4,6}, {1,3,5,7} };
这意味着我们是两个 str
值 {0,2,4,6}
在索引 0 和 {1,3,5,7}
在索引 1 的数组。
cout<<t[0] //gives 0,2,4,6
cout<<t[1] //gives 1,3,5,7
现在,当有问题 cout << t[1].t[0].t[1];
时,我们会看到 t[1]
中的内容,即 (1,3,5,7)
,然后我们进入 str
块以分配 t[1]
到 stc
类型的变量。在其中,我们找到了另一个类型为 stc
的变量 t[2]
。这里我们将之前的值划分为 t[1].t[0]=1,3
和 t[1].t[1]=5,7
。
现在,当有问题 cout << t[1].t[0].t[1];
时,我们会看到 t[1].t[0]=1,3
中的内容,然后我们进入 stc
块内部,将 t[1].t[0]
分配给类型为 [=29= 的变量].在其中,我们找到了另一个 int
类型的变量 t[2]
。在这里,我们将之前的值划分为 t[1].t[0].t[0]=1
和 t[1].t[0].t[1]=3
。
现在,当有问题 cout << t[1].t[0].t[1];
时,我们会看到 t[1].t[0].t[1]=3
中的内容,然后由于 cout
!!!!!
而将其打印出来
有人可以帮助我逐步理解为什么以下 C++ 代码输出 3 吗?
#include <iostream>
using namespace std;
struct sct
{
int t[2];
};
struct str
{
sct t[2];
};
int main() {
str t[2] = { {0,2,4,6}, {1,3,5,7} };
std::cout << t[1].t[0].t[1];
}
t[1]
是 {1,3,5,7}
。
str
在内存中表示为四个背靠背的整数,组织成 2 个 sct
结构。在这种情况下,第一个包含值 1 和 3,而第二个包含 5 和 7。
因此,t[1].t[0]
是{1,3}
,所以t[1].t[0].t[1]
是3。
str t[2] = { {0,2,4,6}, {1,3,5,7} };
这意味着我们是两个 str
值 {0,2,4,6}
在索引 0 和 {1,3,5,7}
在索引 1 的数组。
cout<<t[0] //gives 0,2,4,6
cout<<t[1] //gives 1,3,5,7
现在,当有问题 cout << t[1].t[0].t[1];
时,我们会看到 t[1]
中的内容,即 (1,3,5,7)
,然后我们进入 str
块以分配 t[1]
到 stc
类型的变量。在其中,我们找到了另一个类型为 stc
的变量 t[2]
。这里我们将之前的值划分为 t[1].t[0]=1,3
和 t[1].t[1]=5,7
。
现在,当有问题 cout << t[1].t[0].t[1];
时,我们会看到 t[1].t[0]=1,3
中的内容,然后我们进入 stc
块内部,将 t[1].t[0]
分配给类型为 [=29= 的变量].在其中,我们找到了另一个 int
类型的变量 t[2]
。在这里,我们将之前的值划分为 t[1].t[0].t[0]=1
和 t[1].t[0].t[1]=3
。
现在,当有问题 cout << t[1].t[0].t[1];
时,我们会看到 t[1].t[0].t[1]=3
中的内容,然后由于 cout
!!!!!