快速注册 找回密码

QQ登录

只需一步,快速开始

查看: 582|回复: 2

C语言编程底子(4)运算符(第二部门)

[复制链接]

该用户从未签到

发表于 2020-5-19 09:05:52 来自手机 | 显示全部楼层 |阅读模式
本章节将先容C语言运算符的根本知识,此中包罗条件运算符、逗号运算符、取地点息争引用运算符、位运算符。
u32yP32BCvuNQYH5.jpg 目次

1、条件运算
条件运算符: -- ? -- : --
即:条件表达式 ? 表达式1 : 表达式2。
⑴若条件表达式为,则整个表达式的值取表达式1的值,否则取表达式2的值。
例:int i = 10;
int j = 5;
int num = 0;
num = (i > j) ? i : j; // 两个整数取此中较大的数,即num即是10。
⑵若表达式1和表达式2的范例差别,则主动转换为二者中较高品级的范例。
2、逗号运算
逗号运算符:,
即:表达式1, 表达式2, ..., 表达式n
⑴依次盘算各表达式的值,以表达式n的值作为整个表达式的值。
例:int i = 10;
int j = 5;
int num = 0;
num = 10 + (i + 1, j + 1); //num的值即是16。
⑵并不是在全部出现逗号的地方都是逗号表达式。
int a = 2, b = 4, c = 6, x, y; // 不是逗号表达式
3、取地点息争引用运算
⑴内存中的地点是按字节编号的,多字节变量的地点是(地点最低)字节的地点。
⑵取地点运算:根据变量得到地点,运算符:&。
例:int i = 10;
int* addr = NULL; //界说地点
addr = &i; //得到变量i的地点
⑶解引用运算:根据地点取得变量,运算符:* 。
例:int i = 10;
int* addr = NULL;
addr = &i;
*addr = 11; //通过解引用运算得到变量i,并将变量i的值修改为11。
4、位运算
⑴位与:&
-到场运算的两位都是1效果为1,否则为0。
-位与可以置某一位为0,也可以得到某一位的值。
例:
10110001 –> A
11101111 -> B
&---------------
10100001 -> 将A的第四位置0
例:
10110001 -> A
00010000 -> B
&-----------------
00010000 ->若A&B == B,则A的第四位为1,否则为0
⑵位或:|
-到场运算的两位都是0效果为0,否则为1。
-位或可以置某一位为1,也可以得到某一位的值。
例:
10100001 -> A
00010000 -> B
|---------------
10110001 -> 将A的第四位置1
例:
10100001 -> A
11101111 -> B
|----------------
11101111 -> 若A|B == B,则A第四位为0,否则为1
⑶异或:^
-到场运算的两位相异为1,否则为0。
-异或可以翻转某一位,想翻哪位哪位为1,别的为0。
例:
10101010 -> A
00100100 -> B
^---------------
10001110 -> 将A第三位和第六位翻转。
⑷位反:~
-1变0, 0变1
例:
~01100001
-----------------
10011110
⑸左移位:<<
-有符号数,右补0。
例:11011000(-40) << 1 --> 10110000(-80)
-无符号数,右补0
例:10110100(180) << 1 --> 01101000(104)
-在不发生高位溢出的条件下左移1位相称于乘以2
例:00010000(16) << 1 --> 00100000(32)
⑹右移位:>>
-有符号数,左补符号位
例:11011000(-40) >> 1 --> 11101100(-20)
- 无符号数,左补0
例:10110100(180) >> 1 --> 01011010(90)
-右移1位相称于除以2
例:00010000(16) >> 1 --> 00001000(8)
本章节完毕。
下一章节将先容C语言的范例转换及运算符的优先级

该用户从未签到

发表于 2020-5-19 09:36:08 | 显示全部楼层
转发了

该用户从未签到

发表于 2020-5-19 10:06:22 | 显示全部楼层
转发了
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

Powered by Discuz! X3.4 © 2006-2020 Comsenz Inc

本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与[小城社区]无关。 如有侵犯您版权的,请邮件与我们联系处理(邮箱:10000@546800.com),本站将立即改正。
快速回复 返回顶部 返回列表