首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

,帮小弟我解释一下下面的几段代码,多谢

2012-02-08 
各位高手,帮我解释一下下面的几段代码,谢谢!unionun//union是什么意思哦{inticharc[2]}main(){unionunx

各位高手,帮我解释一下下面的几段代码,谢谢!
union   un   //union是什么意思哦
{  
int   i;  
char   c[2];  
}  
main()  
{  
union   un   x;  
x.c[0]=10;  
x.c[1]=1;  
printf( "%d ",x.i);  
}


#define   SUM(X)   X*X   //为什么要这么用?
main()  
{  
int   a=6;int   i=1,j=2;  
a+=SUM(i+j)/SUM(i+j);   //这与上面有什么关系?
printf( "%d\n ",a);  
}  


fun(int   x)  
{  
int   a=3;  
a*=x;  
return   a;  
}  
main()  
{  
int   x=2,y=1,n;  
n=fun(x);  
n=fun(y);  
printf( "%d\n ",n);  
}  


main()  
{  
char   *p= "abcdefgh ",*r;  
long   *q;  
q=(long*)p;   //这是什么意思?
q++;  
r=(char*)q;  
printf( "%s\n ",r);  



[解决办法]
union un //union是什么意思哦//这是一个联合,所谓联合就是其里面的各个变量都使用同一个内存,内存大小取决于最大的变量的大小,本例中un的大小为4个字节,因为int是4个字节,char是1个字节。
{
int i;
char c[2];
}
main()
{
union un x;
x.c[0]=10;
x.c[1]=1;
printf( "%d ",x.i);
}


#define SUM(X) X*X //为什么要这么用?//这是所谓的宏,但是此处的宏定义有问题,容易出错,
main()
{
int a=6;int i=1,j=2;
a+=SUM(i+j)/SUM(i+j); //这与上面有什么关系?//此处相当于a+=i+j*i+j/i+j*i+j
printf( "%d\n ",a);
}


fun(int x)
{
int a=3;
a*=x;
return a;
}
main()
{
int x=2,y=1,n;
n=fun(x);
n=fun(y);
printf( "%d\n ",n);
}


main()
{
char *p= "abcdefgh ",*r;
long *q;
q=(long*)p; //这是什么意思?//此处是p的类型强制转化为long*型赋给q
q++;
r=(char*)q;
printf( "%s\n ",r);



[解决办法]
union un //union是什么意思哦
--------------------------
union 联合体

#define SUM(X) X*X //为什么要这么用?
-------------------------------
编译预处理

q=(long*)p; //这是什么意思?
--------------------
强制类型转化。

to:楼主 先去搞一本基础的书看看。你问的任何一本的基础的书上都有讲的。不然这样问挺浪费时间的。或者www.google.cn 详细 而且 你掌握的东西也会很多。

热点排行