| 
 一.类型说明符  1.类型说明符是为了节省内存空间,不同类型的值应该提供不同大小的存储单元(便于区分及优化内存)  2.long long 是long long int的简写,在16/32/64位编译器中都是占8个字节  3.short是short int的简写,在16/32/64位编译器中都是占2个字节  4.long还可以用来修饰double类型--->占位符用%Lf  (long long和short不可以)  5.long/short都不能用来修饰float/char类型  6.long/short不可以同时使用  7.无符号的char类型取值范围是:0~255;    有符号的char类型取值范围是:-128~127  8.浮点型数据只有有符号类型的,没有无符号类型  9.signed--->能修饰 int char --->占位符用 %d    unsigned--->能修饰 int char --->占位符用 %u    short--->能修饰 int --->占位符用 %d    long--->能修饰 int double--->int占位符用%ld  double占位符用%Lf    long long--->能修饰 int --->占位符用 %lld  
二.位运算:  1.& 按位与运算--->有假为假  2.| 按位或运算--->有真为真  3.^ 按位异或运算--->不同为真,相同为假  4.~ 取反运算--->按位取反(包括符号位)  5.<< 左移运算--->按位左移,高位丢弃(包括符号位)  6.>> 右移运算--->按位右移,高位补0或补1(符号位不变)  7.注意:        1).相同整数相^的结果是0        2).一个数^另一个数两次结果不变(还是这个数本身)        3).几个整数相异或跟运算顺序无关        4).a左移n位--->等效于a*2^n(若符号位改变,则不成立)        5).a右移n为--->等效于a/2^n        6).右移是高位的空缺是正数补0;负数补0或1(取决于编译系统)        7).取反的快捷运算:a取反==-a-1        8).浮点数不能进行位移运算  8.计算机里:补码==原码==反码(不是指表现形式,是指真实的值相等)  9.正数的补码,反码,原码的表现形式是一样的  9.负数的补码=反码+1;反码=原码符号位不变,其余位取反  
 三.数组的特点:  1.数组必须要定义长度(正整数),定义时可初始化(长度必须是常量)或之后单独初始化     1).数组的长度必须是正数     2).批量赋值只能在定义数组的时候  2.初始化数组的时候元素的个数可以小于数组的总长度  3.数组是有序的,每个数据都有角标,从0开始分配,角标不能>=数组长度  4.数组元素的类型要一致  5.数组的名字表示数组第一个元素的地址,而数组第一个元素的地址和数组的地址是同一个地址      1).数组第一个元素的地址=&arr[0]      2).数组名代表了一个地址,这个地址是数组第一个元素的地址      3).数组的地址是数组名取地址,即:数组的地址=&arr      4).单单从地址的值来看  数组名代表的地址 = 数组第一个元素的地址 = 数组的地址    
 |