设为首页 加入收藏

TOP

C语言编程积累2(二)
2015-01-22 21:30:34 来源: 作者: 【 】 浏览:87
Tags:语言编程 积累
类型。unsigned long long :lld,64位long unsigned int: ld = unsigned long int一样以上是C99中新加的
20。fread(以r读的方式打开),fwrite(以a追加的方式打开)如果是操作2进制文件则加为rb,ab
21.参数入栈时,不足int的,扩展为int后入栈
比如char(-127)扩展成int(-127)
也就是由 10000001 扩展成 11111111 11111111 11111111 10000001
然后你使用%u,也就是将 11111111 11111111 11111111 10000001 当成 unsigned int 来看,那它当然就是 4294967169 了
22关于类型提升,有符号扩展, 我看了下《 Linux C一站式编程》 的15章的3.5节 “编译器如何处理类型转换”的最后一段, 里面最后一段说:
“最后一个例子,把short型转换成int型,对应表中的“signed integer to signed integer”,转换之后应该值不变。那怎么维持值不变呢?是不是在高位补16个0就行了呢?如果原值是-1,十六进制表示就是ffff,要转成int 型的-1需要变成ffffffff,因此需要在高位补16个1而不是16个0。换句话说,要维持值不变,在高位补1还是补0取决于原来的符号位,这称为 符号扩展(Sign Extension)。”

这是signed integer to signed integer, 为何signed char转为unsigned int时 ,也运用了符号扩展??
23宏定义中使用\来屏蔽换行符,这样后面的内容都可以是该宏定义块的内容,直到出现换行符后就意味着该宏内容结束。
24. 指针与静态数组的sizeof操作
指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。
注意:int *p; sizeof(p)=4;
但sizeof(*p)相当于sizeof(int);
对于静态数组,sizeof可直接计算数组大小;
例:int a[10];char b[]="hello";
sizeof(a)等于4*10=40;
sizeof(b)等于6;
注意:数组做型参时,数组名称当作指针使用!!
void fun(char p[])
{sizeof(p)等于4}

25.C语言复合运行:原则是从右向左依次赋值,可以节省内存开销a*=a;a=-a;a+=a;a/=a,a|=a;a&=a,a^=a;a=~a(取反);负数的取反和变号不一样。取反对每一位包括符号位做取反操作,取负就是原值变换符合后的补码,原数是正,则是负数的补码存在,原数是负,则以正数的原码存在(正数原码和补码一样)
26. C语言中的volatile告知编译器,这个变量不要被编译器优化成寄存器间接访问变量。无论什么情况下都要使用直接访问(防止特殊的改变,常常指的是硬件引起的变换),volatile易失的,不稳定的1. volatile变量可变允许除了程序之外的比如硬件来修改他的内容 2. 访问该数据任何时候都会直接访问该地址处内容,即通过cache提高访问速度的优化被取消。
27 int bit0:1什么意思
位域是指信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。为了节省存储空间,并使处理简便,C语言提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示
typedef union{
unsigned char value;
struct
{
unsigned int bit0:1;
unsigned int bit1:1;
unsigned int bit2:1;
unsigned int bit3:1;
unsigned int bit4:1;
unsigned int bit5:1;
unsigned int bit6:1;
unsigned int bit7:1;
} bit_field;
} PORT;
28 fstat获取文件的大小等基础信息,ftruncate改变文件大小
ftruncate(fd,length),改为length的长度

 

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇0524.Objective-C中时间戳转换和.. 下一篇C语言函数调用栈(二)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: