1.
#include<stdio.h>
void main()
{
printf("%f\r\n",5);
printf("%d",5.0001);
return 0;
}
打印结果:
0.000000
920840988
请按任意键继续. . .
解析:因为5为int型,在32为系统中占有4个字节,%f为float型,会从stack中读取8个字节,导致内存访问越界。
下面定义是否有问题:
struct a{
int x:1;
int y:2;
int z:33;
}
以为int为4字节,32为,定义33bit会造成越界。