1:操作符:(a):算数操作符:+ - * / % ;注意:只要操作数出现浮点型数据,算出来的结果也是浮点型。
(b):移位操作符:>>;<<
移动的是二进制数字,箱子并没有动,那右边空出来的位置补零。最后换成十进制再打印即可。
(c):位操作符:& :二进制对应位置都为1,则该位置为1,否则都为0
^:二进制位相异为1,反之为0
|:二进制对应位置存在1,则该位置为1,否则为零。
(d):赋值操作符:没啥可说的
要注意一点:直接写出来的浮点数默认数据类型为double,如果:
会报错,应当:
另外:a=a+5等价于 a+=5;
(e):单目操作符
!:逻辑反、+ 、—、&、 sizeof(针对操作数类型的长度,以字节为单位)、~(对一个二进制数按位取反)、 --、 ++、*(解引用操作符)、(类型):强制类型转换
注意:①:~a是以补码的形式存储的,打印时使用的是原码。
②:正数的原码、反码、补码一样,负数的要计算
③:整数在内存中存放的都是二进制补码,打印的都是原码,反码为中间变量
针对强制类型转换:
以上可打印,但会警告。
如果这样:
就不会警告了,即使打印结果一样。
(f)关系操作符:>、<、>=、<=、==、!=
(g)逻辑操作符:&&、||
(h)条件操作符:exp1?exp2:exp3;
(i)逗号表达式:exp1,exp2,...;(从左至右依次计算,以最后一个表达式的结果作为整个逗号表达式的结果)
(j)下标引用[]、函数调用()、结构体成员:.、->
2常见关键字:①:关键字不能创建
②:变量与关键字不可同名
2.1常使用的关键字:
(a):typeof(类型重命名)
unsigned int age;嫌弃unsigned int 太长,可以这样:typeof unsigned int u_int换了个名字而已。
(b):static修饰局部变量:可改变它的生命周期
static修饰全局变量:使其丧失外部链接性,只在其所在的源文件内可使用,不可被外部调用
static修饰函数时与修饰全局变量类似。