C/C++中的多层嵌套结构

时间:2022-09-08 11:33:14
#include <iostream>
using namespace std; 
#define CHINA 100
#define KINDY_LOVE_NET2K 200
struct cool 
{
int x ;
int y ;
}
;
struct kk 

int ucdos,cmd ;
}
;
struct pop 
{
cool tx ;
cool ty ;
kk tuc ;
kk twy ;
int a,b ;
}
boy 
;
int main()
{
cout<<"请依次输入4个整数:";
cin>>boy.tuc.ucdos>>boy.tuc.cmd>>boy.twy.ucdos>>boy.twy.cmd;
cout<<"boy.tuc.ucdos="<<boy.tuc.ucdos<<endl;
cout<<"boy.tuc.cmd="<<boy.tuc.cmd<<endl;
cout<<"boy.twy.ucdos="<<boy.twy.ucdos<<endl;
cout<<"boy.twy.cmd="<<boy.twy.cmd<<endl;
////////////////////////////////////////////////////
boy.tx.x=CHINA ;
boy.tx.y=KINDY_LOVE_NET2K ;
boy.ty.x=boy.tuc.ucdos;
boy.ty.y=boy.twy.ucdos;
cout<<"boy.tx.x="<<boy.tx.x<<endl;
cout<<"boy.tx.y="<<boy.tx.y<<endl;
cout<<"boy.ty.x="<<boy.ty.x<<endl;
cout<<"boy.ty.y="<<boy.ty.y<<endl;
///////////////////////////////////////////////////
boy.a=boy.tx.x+boy.tx.y ;
boy.b=(boy.tx.x+boy.tx.y)-(boy.ty.x/boy.ty.y);
cout<<"boy.a="<<boy.a<<endl;
cout<<"boy.b="<<boy.b<<endl;
////////////////////////////////////////////////////

}

由于不细心把代码写错,这里还发现有个问题,就是这段代码改成用C写的时候,在结构体“kk”内加入代码:
struct cool wx ;
struct cool wy ;
然后在结尾加入:
boy.tx.wx.x=CHINA ;
printf("boy.tx.wx.x=%d/n",boy.tx.wx.x);
boy.tx.wx.y=boy.twy.cmd;
printf("boy.tx.wx.y=%d/n",boy.tx.wx.y);
boy.tx.wy.x=KINDY_LOVE_NET2K;
printf("boy.tx.wy.x=%d/n",boy.tx.wy.x);
boy.tx.wy.y=boy.a;
printf("boy.tx.wy.y=%d/n",boy.tx.wy.y);
在TC中编译时是可以通过的,不过程序出现如下提示:
警告 temp.c 45: 'wx'非构造部分 在函数 
警告 temp.c 46: 'wx'非构造部分 在函数 
警告 temp.c 47: 'wx'非构造部分 在函数 
警告 temp.c 48: 'wx'非构造部分 在函数 
警告 temp.c 49: 'wy'非构造部分 在函数 
我很是纳闷,为什么非结构体还可以编译通过呢?程序运行时没感觉到任何异样,以下是运行得到的数据,和预期中的效果毫无差别:
boy.tx.wx.x=100
boy.tx.wx.y=90
boy.tx.wy.x=200
boy.tx.wy.y=300
如果移植不成问题的话,我认为这样写也没问题,但是我决不建议这样写,错误的就是错误的,我们要养成一个良好的编程习惯,特别对于初学者来说,这点
是尤其重要的。