C/C++中的多層嵌套結構

#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
如果移植不成問題的話,我認爲這樣寫也沒問題,但是我決不建議這樣寫,錯誤的就是錯誤的,我們要養成一個良好的編程習慣,特別對於初學者來說,這點
是尤其重要的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章