C语言第二条线:数据操作
1、运算符和表达式
1.1 算术运算符 和 算术表达式
1.2 赋值运算符 和 赋值表达式
1.3 关系运算符 和 关系表达式
1.4 逻辑运算符 和 逻辑表达式
1.5 位运算符 和 位操作表达式
1.6 逗号运算符 和 逗号表达式
1.7 条件运算符 和 条件表达式
1.8 其它的运算符
1.1 算术运算符 和 算术表达式
+(正) -(负) * /(取整) %(取余)
四则运算 + 加法运算,也可以表示正数。 a+b;
- 减法运算,也可以表示负数。 a-b ; -5
* 乘法运算。 a*b;
/ 除法运算。
% 取余数
++ 自增运算符
- - 自减运算符
注意: / 取整 和 % 取余 ,可以做按位取值。
例如:6789 - - - 》 千 百 十 个 上的数。
7199秒 - - -》 XX 小时 XX 分钟 XX 秒。
结论:++i+++i+++i 这样的表达式,意义不大。让大家知道不要循环给中间变量取值赋值。
1.2 赋值运算符 和 赋值表达式
=赋值运算符 右结合。作用是给变量赋值用的。
a = 100; 读作把100 赋值给变量a
复合赋值运算符
+=,-=,*=,/=, %= ,^= 等
a += b 相当于 a = a+b;
a -= b 相当于 a = a-b;
a /=b 相当于 a = a/b;
1.3 关系运算符 和 关系表达式
== 相等 (count == 3 ,3 == count)
!= 不相等 (a != b) 如TP-LINK
> 大于 ( a>b ) 常和条件判断语句同时使用
< 小于 ( a<b )
>= 大于等于 (a >= b)
<= 小于等于 (a <= b)
1.4 逻辑运算符 和 逻辑表达式
&& 逻辑与 表示并列关系 多个条件必须同时满足。
|| 逻辑或 表示选择关系 多个条件只要满足其一即可。
!逻辑非 表示取反 !0 真
1.5 位运算符 和 位操作表达式
& 按位与
| 按位或
~ 按位取反
^ 按位异或
<< 按位左移
>> 按位右移
广泛的用于嵌入式开发,比如地铁上的站点提示灯
- - - - -》行驶方向
益田 - - -购物公园 - - 红岭- - - 老街- - - 田贝- - -布吉 - - 横岗- - 》双龙
& 按位与
5 0000 0101
& 3 0000 0011
- - - - - - - - - - - -
0000 0001
总结:两个数如果是相同2进制位上的数
1和1 相与 结果 1
0和1 相与 结果 0
作用:可以使得一个数指定位上的数 置 0
| 按位或
5 0000 0101
| 3 0000 0011
- - - - - - - - - - - -
0000 0111
总结: 如果是 1 和 0 相或 结果 1
如果是 0 和 0 相或 结果 0
作用:可以把数的指定2进制位上的数 置换成 1
~ 按位取反
1、一个数取反以后的结果就是: -1 - (这个数)
1.1正整数取反 5 -1 - 5 = -6
1.2负整数取反 -5 -1 - (-5) = 4
^ 按位异或
可以用异或 进行加密。第一次异或 可以改变原来的数据。 c = a^b;
第二次异或就可以变回原来的数。 a = c ^ b;
5 0000 0101
^ 3 0000 0011
- - - - - - - - - - - -
0000 0110
总结:相同2进制位上数,数值不相同则为1,数值同则为0。
作用:1.不借助中间变量交换两个数的值。
2.异或加密的程序。OK
左移 << 和 右移 >>
1.我们不建议使用 >> 右移动,尤其是要求计算机长期工作的,如 服务器 7*24。(注意:循环的右移的过程中,有风险)
2.<< 左移一位 1 -> 2 -> 4 左移几位就相当于乘以2^n
0000 0001
0000 0010
左移:规则 由低位向高位移动,从右向左移动,高位移出,低位补0;
右移:规则 由高位向低位移动,从左向右移动,低位移除,高位补0;
1.6、逗号运算符和逗号表达式
,
作用 ,作为分隔符.
1.可以分隔多个变量
int a,b,c,d,e;
int a = 0, b = 0, c = 100;
2.分隔多个参数
printf("%d %d %d",a,b,c);
scanf("%d,%d",&a,&b);
1.7、条件运算符和条件表达式
?: 三目运算符
条件?真:假 (条件运算符 可以写出和复杂的表达式 且 可以嵌套)。
1.8、其它的运算符
[ ] 下标运算符
. 点运算符 结构体运算符 rui.name;
-> 指针运算符 point -> name;
& 寻址运算符 用于取地址的
* 间接寻址运算符 用于取值的
( ) 函数运算符