基本数据类型和一些位运算的总结
一 关键字
C语言提供的具有特殊功能的字符;
1,基本数据类型
int :整型数据,通常为默认类型;
float:单精度浮点型;
double:双精度浮点型;
char:字符型类型数据,属于整型类型;
void:空类型,声明函数无返回值或参数,声明无类型指针,显示丢弃运算结果;
在这里谈个溢出问题,由于我写函数题时,经常习惯性地把数据都定义为 int 类型,导致频繁地代码过不了关,所以大家一定要注意根据所储存的数据长度来正确定义类型,我现在上个例子来说明一下:
在这里我用的是float来定义变量,所得结果是1.000004,float的数据长度是32位,在浮点型数据类型中不算高的,以下是把float换成double的结果:
显然由于结果数据太长,导致数据溢出,所显现出来的两种数据类型定义变量的结果不同,为避免这种情况发生,要多留意数据长度来选择合适的数据类型;
2, 类型修饰关键字
short:修饰int,短整型数据,可省略被修饰的int;
long:修饰int,长整型数据,可省略被修饰的int;
signed:修饰整型数据,有符号数据类型;
unsigned:修饰整型数据,无符号数据类型;
这里short和long都是比int精度低或高的整型数据类型,unsigned储存单元全部用于表示数值,为了处理不同取值范围的整数,C语言提供了扩展的整数类型,它们的表示方法是在int前加上限定词short,long,unsigned;
3, 复杂类型关键字
struct:结构体声明;
union:共同体声明;
enum:枚举声明;
typedef:声明类型别名;
sizeof:得到特定类型或特定类型变量的大小,如:计算字节;
二,位运算
1, 是什么?
是直接对整数在内存中的二进制位进行操作的方法(只能操作整形数据)
2, 有什么用?
直接通过操作二进制的位来实现运算,高效;
3, 怎么用?
&与运算:对应两个二进位均为1时,结果位才为1,否则为0.(有假为假==0)
|或运算:对应的两个二进位有一个为1时,结果位就为1,否则为0.(有真为真==1)
^异或运算:对应的二进位不同时为1,否则为0.(不同为真==1,否则为假==0)
~取反运算:对整数的各二进位进行取反,包括符号位(0变1,1变0,真假互换)
<<左移:把整数的各二进位全部左移n位,高位丢弃(包括符号位),低位补为0;
左移n位就是乘以2的n次方(但移动后符号位变化除外,符号位改变则正负改变)
>>右移:把整数的各二进位全部右移n位,符号位不变。高位的空缺是正数补0;
是负数高位补0或补1,取决于编译系统的规定,右移n位就是除以2的n次方。