目录
一、二进制
机器语言是用二进制表示的,数字1和0刚好可以代表电路的开与闭
一个二进制位占内存空间为1bit,整形所占内存为4字节,所以有32个比特位,每一个比特位上的数字为0或1。其他内置数据类型同理。如整形 1的二进制表示形式为
0000 0000 0000 0000 0000 0000 0000 0001
对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式,对于整形家族而言,正数与无符号数的原码反码补码相同,负数的原反补之间存在一定的转换关系,如下
原码:一个数字的二进制表示,其中最高位是符号位,0表示正,1表示负,其余二进制位表示数值
反码:原码的符号位不变,其他二进制位按位取反,如0处取反为1,1处取反为
补码:反码+1,即可得到补码
二、操作符简介
2·1操作数
操作数是指被操作符具体作用到的实体,如表达式3+2中,数字3和2就是被操作符+作用的两个实体
2·2算术操作符
取模操作符的操作数必须均为整形,其余可为浮点形或整形
对于除法而言,两个数都是整形时执行整形除法,结果返回的是整形,有一个为浮点数时执行浮点数除法,结构返回浮点型数字
2·3移位操作符
移位的位指的是二进制位。移位操作符的操作数只能是整数
移位操作符分为左移操作符 "<<" 和右移操作符 ">>"
左移操作符移位规则是,左边丢弃,右边补0,如 2<<1 (表示2左移1个二进位) ,结果是
00000 0000 0000 0000 0000 0000 0000 0100
右移操作符的运算规则有两种,逻辑右移和算术右移
逻辑右移是直接将二进制位右边丢弃,左边补0;算数右移是将二进制位右边丢弃,左边补符号位,具体位移方法取决于编译器,一般采用算术右移
移动的数位最好不要是负数,因为这种行为C语言没有给出具体执行标准,完全由编译器决定
2.4位操作符
位操作符有按位与 "&" 、按位或 "|" 、按位异或 "^",操作数均为2
&:两个数的某二进制位同为1时,该二进制位所得结果为1,任一为0则为0
| :两个数的某二进制位同为0时,该二进制位所得结果为0,任一为1则为1
^:两个数的某二进制位相同时,该二进制位所得结果为0,相异时为1
2·5单目操作符与逻辑操作符
在C语言中,++与--操作符前置与后置的区别仅在于,前置是变量先自增再使用,后置是先使用再自增,返回的都是数值常量
int a = 0;
printf("%d",a++); //打印0,若前置则打印1
//无论前置与后置,执行之后a的值都是1
2·6条件操作符与逗号表达式
条件操作符:exp1?exp2:exp3,意思是,当exp1为真时,exp2执行,否则exp3执行
int a = 2;
int b = 3;
int c = a>b?a:b;
//最终c的值为3
逗号表达式:多个表达式间用逗号隔开,则各个表达式依次执行,且最终返回的是最后一个表达式的结果,如
int a = 2,3,4,5,5,6,1;
//a的值为1
2·7下标引用、函数调用、结构成员访问
下标引用操作符 "[]":用于访问数组中的元素,方括号内为元素所对下标,可以是变量
函数调用操作符 "()":用于调用函数,()内为参数,无参则为空
结构成员访问操作符 ".":访问结构体内成员,后续讲解
三、关键字
C语言提供了32个关键字,关键字不能用作函数名、变量名
大部分关键字都会在后续使用,其中volatile关键字能够体现C语言的段位,当前仅需了解