请教:C语言里溢出问题
我用的机器是32位的写了一个关于结构体的小程序:
源程序如下:
#include<stdio.h>
#include<string.h>
struct stu
{
int num;
char name[20];
float score[3];
};
int print(struct stu *p )
{
printf("num:%d\nname:%s\nscore[0]:%f\nscore[1]:%f\nscore[2]:%f\n",p->num,p->name,p->score[0],p->score[1],p->score[2]);
return 0;
}
int main()
{
struct stu student;
struct stu *p;
p=&student;
student.num=0213321;
strcpy(student.name,"na na");
student.score[0]=98.5;
student.score[1]=88.5;
student.score[2]=90.0;
print(p);
return 0;
}
输出结果:
num:71377
name:na na
score[0]:98.500000
score[1]:88.500000
score[2]:90.000000
问题:正常情况下:num:0213321
现在num:71377
一开始找不到错误,忽然怀疑可能是int值范围的问题,于是把student.num=0213321改为21
然后输出就正常了,不过,32位int应该是4个字节,感觉没有达到它的最大值?为什么出现这种问题啊?
还有,超过最大值的时候,是编译器随机给num分配一个值吗?哪位高手可以解答一下啊?不胜感谢!呵呵