首页 > 其他分享 >逻辑运算符的优先级

逻辑运算符的优先级

时间:2023-03-25 23:07:30浏览次数:121  
标签:逻辑 优先级 运算 int c++ 运算符 例子 && 式子

在一个表达式中,可以含有多个逻辑运算符,他们的优先级是:“!”最高“&&”次之“||”最低;逻辑运算低于所有关系运算,而“!”高于所有算术运算。

第一个例子

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
	int a = 3;
	int b = 4;
	int c = 5;
	int d = 6;
	(a > b) && (c > d);
	a > b&& c > d;
}

这两个式子的值一样,都是为0;因为逻辑运算低于所有关系运算,()可以不加。

第二个例子

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
	int a = 0;
	int b = 4;
	int c = 0;
	int d = 6;
	int e = (a || b) && (c || d);
	int f = a || b && c || d;
	printf("e=%d,f=%d",e,f);
}

这个式子尽管他们的答案一样,但是他们所表达的意思不一样,第一个式子优先算括号里面的,而第二个式子先算b&&c他们的结果是0;再计算a||0,其结果也是0,最后算0||d,答案也是1。

第三个例子

int a = 0;
	int b = 4;
	int c = 0;
	int d = 6;
 !a || a > b;

这个式子结果为1,首先是判断!a,其结果为1,再判断a>b其结果为0,然后就是||,得到答案1。

第四个例子

int main() {
	int a = 3;
	int b = 4;
	int c = 0;
	int d = 6;
	int e = a >= 10 && b && c++;
	int f = a >= 10 || b || c++;
	printf("e=%d,f=%d",e,f);
}

第四个例子有两个问题1.关于e,f的值以及c的值有没有变化。

首先因为关系运算大于逻辑运算,所以先是判断a>=10,又因为C语言规定若&&前面的值为0,则后面的操作不进行,虽然c++的优先级最高,但是a>=10的值为0,所以c++不进行运算,c的值不改变。e的值为0,c不改变。

f的值为1,首先是进行c++运算他的值为1,再||中只要一边为1,就确定了整个式子为1。c的值改变了,它的值为1。

第五个例子

int main() {
	int a = 3;
	int b = 4;
	int c = 0;
	int e = ++a || b && ++c;
	printf("e=%d,c=%d,a=%d",e,c,a);
}

第五个例子也是判断式子的值以及c的值有没有改变;

第五个式子其实与第四个一样,首先++a其值为1,||之后的操作就不再进行,式子的值为1,c的值没有改变。

标签:逻辑,优先级,运算,int,c++,运算符,例子,&&,式子
From: https://blog.51cto.com/u_16002169/6149646

相关文章

  • 【入门】Go语言运算符详解
    目录一、算数运算符1.1案例一:算数运算符练习1.2案例二:求三门成绩的总和、平均分1.3计算商场买衣服总共消费多少元一、算数运算符+-*/%++--1.1案例一:算数......
  • Python爬虫基础——03-类型转换和运算符
    2.6,类型转换函数说明int(x)将x转化成一个整数float(x)将x转化成一个浮点数str(x)将对象x转化成字符串bool(x)将对象x转化成布尔值2.6.1转换成整型:1---1#字符串(str)---转......
  • 运算符
    目录1.运算符和表达式运算符:表达式:2.算术运算符练习:数值拆分3.隐式转换概念:简单记忆:两种提升规则:取值范围从小到大的关系:4.隐式转换的练习案例一:案例二:案例三:案例四:案例五:......
  • Java书城项目Sevelet基本逻辑介绍(增删改查)
    书城项目登录dao接口:UserDaoUserslogin(Stringusername,Stringpassword);实现:UserDaoImplQueryRunnerqueryrunner=newQueryRunner();Connectionconnection......
  • 自《编程的逻辑》一书关于类设计原证的思考
    类设计常归于SOLIP原则,虽然早有耳闻,但是一直未曾探其究竟,最近看这本书看到了作者相关的理解,遂加上自己的理解做为笔记。 1、S-SRP单一职责原则书中关于此原则讲解①......
  • 不要依赖业务逻辑和系统架构处理一些判断
    今天上线前就遇到一个NullPointException,原本依赖于前端处理,如果字段没值就不会传递改key进入json中,但是上线的数据铺垫是直接解析的excel和api调用的,跳过了前端的一些逻......
  • MyBatisPlus中全局Sql注入器应用_逻辑删除使用
    什么是逻辑删除假删除、逻辑删除,并不会真正的从数据库中将数据删除掉,而是将当前被删除的这条数据的一个逻辑字段置为删除状态。实现全局配置注入LogicSqlInjector打开项目的......
  • 为什么C++ 中需要运算符重载
    运算符重载的主要目的是为了方便程序员使用自定义类型。在某些情况下,C++的内置类型可能无法满足程序的需要,需要使用自定义类型。在这种情况下,合适的操作符重载可以使自定义......
  • Java运算符
    运算符算术运算符:++关系运算符:instanceof逻辑运算符:&&,||,!与或非位运算符:&|^~>>,<<,>>>条件运算符:?:Stringtype=score<60......
  • 第八章.逻辑卷技术
    1.逻辑卷技术LVM(LogicalVolumeManager,逻辑卷管理器)最早应用在IBMAIX系统上。它的主要作用是动态分配磁盘分区及调整磁盘分区大小,并且可以让多个分区或者物理硬盘作为一......