(11)运算符(优先级)

(一)算数运算符: + - * / // (取整)%(取余) **(幂运算)

 加减乘除就不说了,和数学当中的一样,这里重点说下//,%和**

 (1)// (取整数) 两个数在进行地板除的时候,有一个数是小数,就在最后的结果上加.0

var1 = 10
var2 = 5
var3 = 3.5
res1 = var1 // var2
res2 = var1 // var3
print(res1)
print(res2)
执行结果
2
2.0

    (2)% 取余

res1 = 10 % 3.5
res2 = 99 % 7
res3 = -99 % 7
res4 = 99 % -7
print(res1)
print(res2)
print(res3)
print(res4)

 执行结果 

3.0
1
6
-6

# 再来看下执行结果,是不是一脸懵逼,小学数学是不是感觉白学了,想了半天之后.....瞎说,小学老师可不教这个,算了,不卖关子了
第一个和第二个执行结果应该都没问题
第三个 :先算99%7 = 1,除数是负数,在余数前加上-号,然后加上被除数,所以结果是 -1+7 = 6
第四个 :先算99%7 = 1,被除数是负数,在被除数前加上-号,然后加上余数,所以结果是 1-7 = -6
双击6666了..............老铁
(3) ** 幂运算
print(2**3)
print(4**3)

执行结果:
8
64

(二)比较运算符: > < >= <= == !=

# 比较运算符只会产生2个结果  要么True 要么False
var1 = 15
var2 = 18
res = var1 > var2
print(res) # False
res = var1 < var2
print(res) # True
res = var1 >= 15  # 只要满足一个条件即为真
print(res) # True
res = var1 <= 15
print(res) # True
res = var1 == var2  # ==是判断两个值是否相等(is是判断两个元素id值是否一致,返回True或False)
print(res) # False
res = var1 != var2  # 不等于
print(res) # True

(三)赋值运算符: = += -= *= /= //= %= **=

var1 = 9
var2 = 5
res = var1
print(res)
var1 += var2  # var1 = var1 + var2
print(var1)
var1 -= var2  # var1 -= var2
print(var1)
var1 *= var2  # var1 *= var2
print(var1)
var1 /= var2  # var1 = var1 / var2
print(var1)
var1 //= var2  # var1 = var1 // var2
print(var1)
var1 %= var2  # var1 %= var2
print(var1)
var1 **= var2  # var1 **= var2
print(var1)

执行结果
9
14
9
45
9.0
1.0
1.0
1.0

(四)成员运算符: in 和 not in (针对于容器型数据),判断某个元素在不在某个容器里面

#(1)str  字符串需要是一个连续的片段
strvar = "如果遇到你是一种错,我宁愿一错再错"
res1 = "你" in strvar
res2 = "遇到" not in strvar
res3 = "我一" in strvar
print(res1)   # True
print(res2)   # False
print(res3)   # False
#(2)list tuple set
listvar = ["周全","陈鹏","陈根基"]
res = "周全" in listvar
print(res) # True
tuplevar = "王新元","叶欣荣","秋波好","刘鹏程"
res = "叶欣荣" not in tuplevar
print(res) # False
setvar = {‘周立飞‘,‘高辉‘}
res =  "高辉" in  setvar
print(res) # True
#(3)dict  注意 : 判断的是键 不是值
dictvar = {"zdx":"无用","gss":"石阡","mlh":"杜十娘"}
res = "杜十娘" in dictvar
res = "mlh" not in dictvar  # True
print(res)

(五)身份运算符: is 和 is not (检测两个数据在内存当中是否是同一个值,返回True或False)

var1 = 56
var2 = 56
res1 = var1 == var2  # (判断两个值是否相等)
res2 = var1 is var2  # (判断两个值得地址是否相等)
res3 = var1 is not var2
print(res1)
print(res2)
print(res3)
执行结果
True
True
False        

(六)逻辑运算符: and or not

# (1)and 逻辑与
# 全真则真,一假则假
res1 = True and True
res2 = False and True
res3 = False and False
res4 = True and False
print(res1) # True
print(res2) # False
print(res3) # False
print(res4) # False
# (2)or 逻辑或
# 全假则假,一真则真
res5 = True or True
res6 = True or False
res7 = False or True
res8 = False or False
print(res5) # True
print(res6) # True
print(res7) # True
print(res8) # False
#(3)not 逻辑非  相当于取反
res9 = not True
res10 = not False
print(res9) # False
print(res10) # True
# (4)逻辑短路
‘‘‘
False and 布尔 在and左边如果时False 逻辑短路 右侧不执行
True or 布尔   在or左边如果是True  逻辑短路 右侧不执行
在开发当中 ,当成"开关"使用
‘‘‘
False and print(123)  # 逻辑短路  # False
True or print(456)  # 逻辑短路   # True
True and print(789)   # 789
# 逻辑运算符的优先级
() > not > and > or  括号的优先级是最高的

(七)位运算符: & | ~ ^ << >> 

(1)按位与 &,两者都有,返回真
var1 = 19
var2 = 15
res = var1 & var2
print(res) # 3
"""
	000000010011
	000000001111
	000000000011  # 3
"""
(2)按位或 | 只要一个有,返回真
res = var1 | var2
print(res) # 31
‘‘‘
	000000010011
	000000001111
	000000011111  # 31
‘‘‘
(3)按位异或 ^ "如果两者不相同,返回真,两者相同返回假
res = var1 ^ var2
print(res)  # 28
‘‘‘
	000000010011
	000000001111
    000000011100 # 28
‘‘‘
(4)<<  相当于 5 乘以 2的2次幂
res = 5 << 2   #  20
res = 4 << 3  # 4乘以2的3次幂
print(res)  # 32
"""
000000101  #  相当于101向左移动了2个二进制位
000010100  #  20
"""
(5)>>  相当于 5 除以 2的1次幂
res = 5 >> 1
print(res)  # 2
"""
0000101 # 相当于101向右移动了1个二进制位
0000010  # 2
"""
(6)~ 按位非 (针对于补码来进行操作 ,连符号位都要改变) 公式 -(n+1)
res = ~19
print(res)  # -20
"""
000000000010011 (补码)
111111111101100 (按位非-->取反作为新的补码计算)

111111111101100  (给补码求原码)
100000000010011  (反码+1)
100000000010100  (原码)  => -20
按位非操作的是补码,如果实在记不住就记住公式: -(n+1)
"""
所有运算符的优先级:
小括号的优先级最高 ()
** 符号优先级最高
=  符号优先级最低
乘,除 > 加减
() > not > and > or
(<< >> ) > & > ^ > |
除此之外剩下的运算符参考以下:
算术运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
赋值运算符单独拿出来 , 用来把最后的结果进行赋值的

练习: 计算 4>5 and 5 <9>5<3 or 1>2 and 3<=3的结果

相当于: 4>5 and (5 <9 and 9 >5and 5<3) or 1>2 and 3<=3

    False and False or False and True

    False

原文地址:https://www.cnblogs.com/lyj910313/p/10798223.html

时间: 2024-10-20 00:25:25

(11)运算符(优先级)的相关文章

(2019.3.11) 运算符优先级

class Demo{    public static void main(String[] args)    {        int x = 0,y = 1; /* if (++x == y-- & x++ ==1 || --y == 0)        {            System.out.println("x="+x+",y="+y);      //x = 2,y = 0;        }        else        {  

运算符优先级

1        算术运算符       单目 >双目 >三目 2        关系运算符 3        逻辑运算符      &&高于||      !算术还高高 一共有十五个优先级: 1   ()  []  .  -> 2   !  ~   -(负号) ++  --   &(取变量地址)*   (type)(强制类型)    sizeof 3   * / % 4   + - 5   >> << 6   > >= <

C 语言运算符优先级

每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖! C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式 右到左 单目运算符 ~ 按位取反运算符 ~表达式 ++ 自增运算符 +

Java运算符优先级(转)

Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目   ( ) 圆括号 从左到右     [ ] 方括号 从左到右     2 + 正号 从右到左 单目   - 负号 从右到左 单目   ++ 自增 从右到左 单目 前缀增,后缀增 - - 自减 从右到左 前缀减,后缀减 ~ 按位非/取补运算 从右到左 单目   ! 逻辑非 从右到左 单目 “!”不可以与“=”联用 3 * 乘 从左到右 双目   / 除 从左到右 双目 整数除法:取商的整数部分,

C语言运算符优先级

C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式 右到左 单目运算符 ~ 按位取反运算符 ~表达式 ++ 自增运算符 ++变量名/变量名++ -- 自减运算符 --变量名/变量名-- * 取值运算符 *指针变量 & 取地址运算符 &

运算符优先级常识

引用:http://www.cnblogs.com/fengkuangIT/p/4423437.html 1        算术运算符       单目 >双目 >三目 2        关系运算符 3        逻辑运算符      &&高于||      !算术还高高 一共有十五个优先级: 1   ()  []  .  -> 2   !  ~   -(负号) ++  --   &(取变量地址)*   (type)(强制类型)    sizeof 3   *

【C知识点】C 运算符优先级和结合性y

1.C语言的运算符优先级有15个,如下图所示. 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 调用函数,数组 结构体成员选择符 () 圆括号 (表达式)/函数名(形参表)   . 成员选择(对象) 对象.成员名   -> 成员选择(指针) 对象指针->成员名   2 - 负号运算符 -表达式 右到左 单目运算符 优先级别仅此前者 (类型) 强制类型转换 (数据类型)表达式   ++ 自增运算符 ++变量名/变量名++ -- 自减运算符

【转】Java运算符优先级

原文网址:http://www.cnblogs.com/gw811/archive/2012/10/13/2722752.html Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目 ( ) 圆括号 从左到右   [ ] 方括号 从左到右   2 + 正号 从右到左 单目 - 负号 从右到左 单目 ++ 自增 从右到左 单目 前缀增,后缀增 - - 自减 从右到左 前缀减,后缀减 ~ 按位非/取补运算 从右到左 单目 ! 逻辑非 从右到左 单目

C语言运算符优先级列表(超级详细的---转载加自己习题)

转载于:http://www.jb51.net/article/37282.htm 每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖! C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算