关闭

C++ 逻辑表达式&& || !

标签: C++
1466人阅读 评论(0) 收藏 举报
分类:

C++提供了3种逻辑运算符,来组合或修改已有的表达式:逻辑OR(||)、逻辑AND(&&)和逻辑NOT(!)


#####################################################


逻辑OR运算符的优先级比关系运算符低,故

5 == 5 || 5 == 9 等价于 (5 == 5) || (5 == 9)

C++规定,||运算符是个顺序点(sequence point)。也就是说,先修改左侧的值,再对右侧的值进行判定。另外,如果左侧的表达式为true,则C++将不会去判定右侧的表达式,因为只要一个表达式为true,则整个逻辑表达式为true

 

Expr1||expr2的值

 

 

Expr1 == true

Exptr1 == false

Expr2 == true

True

true

Expr2 == false

true

False


####################################################


逻辑AND运算符(&&),是将两个表达式组合成一个表达式。仅当原来的两个表达式都为true时,得到的表达式的值才为true

由于&&的优先级低于关系运算符,故

5 == 5 && 4 ==4 等价于 (5 == 5) && (4 == 4)

和||运算符一样,&&运算符也是顺序点,因此将首先判定左侧,并且在右侧被判定之前产生所有的副作用。如果左侧为false,则整个逻辑表达式必定为false,在这种情况下,C++将不会再对右侧进行判定

 

Expr1 && expr2的值

 

 

Expr1 == true

Expr1 == false

Expr2 == true

True

false

Expr2 == false

false

False



#################################################


!运算符将它后面的表达式的真值取反

例如,如果C-风格字符串s1和s2不同,则strcmp(s1, s2)将返回非零(true)值,否则返回0。这意味着如果这两个字符串相同,则!strcmp(s1, s2)为true


!运算符的优先级高于所有的关系运算符和算术运算符。因此,要对表达式求反,必须用括号将其括其。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:705402次
    • 积分:9364
    • 等级:
    • 排名:第2210名
    • 原创:311篇
    • 转载:40篇
    • 译文:10篇
    • 评论:84条
    博客专栏
    文章分类
    最新评论