各位高手,帮我解释一下下面的几段代码,谢谢!
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 详细 而且 你掌握的东西也会很多。