C语言关于结构体赋值的问题,在线等
发布网友
发布时间:2022-04-23 12:51
我来回答
共3个回答
热心网友
时间:2023-09-20 06:42
struct CplxData
{
short Real;
short Imag;
} ;
改成
struct CplxData
{
int Real;
int Imag;
} ;
否则scanf("%d", ...)读取int后, int值(4字节)会溢出到两个short成员(2+2字节)。
对于little endian(低位字节在前)的系统,读Imag时,数据读到Imag所在的2个字节,
高位(0)保存到前面两个字节,而Real刚好在Imag前面两个字节,所以Real被清0。
所以,如果你读一个超过65535的数到Imag,你会发现Real不再是0。
热心网友
时间:2023-09-20 06:43
因为你的p和q才表示地址,你把
for(i=0;i<5;i++)
{
scanf("%d",&p->Real);
scanf("%d",&p->Imag);
p++;
}
改成
for(i=0;i<5;i++)
{
scanf("%d",&A->Real);
scanf("%d",&A->Imag);
}
就行了
热心网友
时间:2023-09-20 06:43
你的机器是大端排序还是小段排序?