1、数据类型转换
不同数据类型变量混合运算时,要升级。
short->int(字符型与整形通用)->float->double。
指针不与以上类型发生类型转换。
等号右边的转化成等号左边的类型。
并按照运算符优先级顺序进行。
2、转义字符
用来表示ASCII码中无法表示的字符,用\+字符或者8或16进制数来表示。
\n 转到下一行
\b 退一格
\r 跳到本行最前
\t 向后跳4个字符长度
转义字符占一个字符长度。eg: \t 为两个字符长度。
注意:
(1)\后只能用小写
(2)\v 垂直制表符和 \f 换页符 对屏幕没有影响,对打印有影响
3、关系和逻辑运算
运算符优先级:
留一道题,我当初做错的: !(a<c)+b!=1&&(a+c)/2
4、自增自减
注意:
(1)只能作用于变量
(2)放在变量之前,先增(或先减)再运算,放在变量之后,先运算,之后变量自身再增(或减)。
(3)结合方向:自右向左。
5、普通位计算
分享一下我自己总结的位运算,还没写完,写完后我会更新,有不对的地方欢迎大家斧正。
按位与(&)作用:
1、置零 43位与148 结果等于00000000
2、若想要取一个数的低字节(就是这个数的二进制的最后八位),只需将这个数与8个1位与即可。
3、保留指定位 只需将这个数 与 另一个这些指定位为1的二进制数相与即可 example:
100110001 想要保留他左边的的3,4,5,7位 则将他跟 101110100相与即可
按位或(|)作用:
如果想将一个数的 后四位置为1 则将这个数的后四位跟1111或 即可
异或(^)运算方法:两个数相同则结果为0 不同结果为1
异或运算应用:
1、使特定位翻转 例如:想将01111010低四位翻转(就是让低四位1变0,0变1),可以将该数跟00001111进行异或运算。
2、与0相异或 保留原值
3、交换两个值,不用临时变量
例如:a=3,即11(2);b=4,即100(2)。 想将a和b的值互换,可以用以下赋值语句实现: a=a∧b; b=b∧a; a=a∧b; a=011(2) (∧)b=100(2) a=111(2)(a∧b的结果,a已变成7) (∧)b=100(2) b=011(2)(b∧a的结果,b已变成3) (∧)a=111(2) a=100(2)(a∧b的结果,a已变成4) 等效于以下两步: ① 执行前两个赋值语句:“a=a∧b;”和“b=b∧a;”相当于b=b∧(a∧b)。
② 再执行第三个赋值语句: a=a∧b。由于a的值等于(a∧b),b的值等于(b∧a∧b), 因此,相当于a=a∧b∧b∧a∧b,即a的值等于a∧a∧b∧b∧b,等于b。 很神奇吧
c语言源代码: #include <stdio.h> main() { int a=3; int b = 4; a=a^b; b=b^a; a=a^b; printf("a=%d b=%d",a,b); }
取反(~)运算符
他是一元运算符,用于求整数的二进制反码,即分别将操作数各二进制位上的1变为0,0变为1
6~17位移运算及循环判断语句重点内容