#include<stdio.h>
int main()
{
int m=011;
printf("%d\n",++m);
return 0;
}
输出为:10
因为此时m以0开始,为八进制数011也就是十进制9,同理,若以0x开头就为16进制数。
#include<stdio.h>
int main()
{
enum W{s=7,m=1,t,w,th,fr,sa};
enum W a=s,b=sa;
printf("%d,%d\n",a,b);
a=t,b=w;
printf("t=%d,w=%d\n",a,b);
a=th,b=fr;
printf("th=%d,fr=%d\n",a,b);
return 0;
}
输出结果:
7,6
t=2,w=3
th=4,fr=5
枚举类型的赋值,如果没有直接定义,默认逐个往后递增。
#include<stdio.h>
int main()
{
union
{
short a[2];
short b,c;
}u;
u.a[0]=10;u.a[1]=20;
printf("%d,%d,%d\n",sizeof(u),u.c,u.b);
printf("%d",sizeof(short));
return 0;
}
输出结果:
4,10,10
2
short类型占用两个字节为int类型的一半,公用体所占用的空间与结构中占用空间最大的元素相同。多个数据公用一个内存,且每次修改会将先前的所有数据覆盖。
#include<stdio.h>
int main()
{
FILE *fp;
int i,len1,len2;
char ch[]="20211224";
fp=fopen("abc.dat","wb");
for(i=0;i<8;i++)
fwrite(&ch[i],1,1,fp);
len1=ftell(fp);
fseek(fp,-3L,SEEK_END);
len2=ftell(fp);
printf("%d,%d\n",len1,len2);
fclose(fp);
fp=fopen("abc.dat","r");
char k=fgetc(fp);
fgets(ch,5,fp);
printf("%c,%s",k,ch);
fclose(fp);
return 0;
}
输出结果:
8,5
2,0211
fseek可以强制使文件标记指向指定的位置。fseek(文件类型指针,位移量,起始点),位移量应该是long型数据(数字末尾加一个L),正数表示向前移动,负数表示向后移动(向前指顺着文件读写的方向)。
ftell函数测定流式文件位置标记指向的当前位置。最开始未读写时,fp的位置是0。