当前课程知识点:C语言程序设计(上) > 数据计算实现与顺序结构程序设计(一) > 2.2 关系运算的C程序实现 > 2.2.3关系运算优先级
关系运算里边
关系运算符有六个
它们有没有优先级
我们看是有的
关系运算符的前四个
大于 大于等于 小于 小于等于
级别是一样的
它们的级别比谁高
比不等于和恒等于的级别要高
但是总体来说是这样
比如说我们看这个式子
在这个式子里边
有一个恒等的比较
也有一个大于等于的比较
优先级是哪个高 大于等于
当然先算它
X大于等于90吗
如果按我们刚才说的X是58的话
NO 这个比较的结果是0
那现在说A恒等于0吗
A刚才给的是多少 80
当然不等了
所以这个式子的结果是0
也就说A的80
和这个关系运算的结果0去比较
比如说刚才我们看到的这个例题
在这个例题里边
我们说它的优先级应该是怎么样
我现在的变化是
把里边的括弧取掉了
这个括弧取掉以后
A的值还是3吗
大家考虑这个括弧取掉了以后
是不是这个优先级就发生了变化
大家看一下这个式子
I加上J 会先去做相加吗
不是
算式运算符里
加和求余那是谁的级别高呢
求余的级别高
那是先求余呢
还是算先说4不等于0吗
是先哪个
总体上是这样子
关系运算符
比算术运算符的优先级是要低的
所有的关系运算符
比算术运算符的优先级要低
所以在这个里边我们是说
加和求余都是算术运算符
一定是先做它们的
但是先做加还是先做求余
求余的级别高
所以先求余
还是我们刚才说的
7和4求余得3
那下来就是I加上3不等于0吗
先做谁呢 当然先做加法
i是2加上3是5
5不等于0吗
YES 不等于0
A的值是什么
A的值就不是3
A的值就是1
所以
我们看去掉了一个括弧
使它的优先级发生了变化
这里边大家要记住的是什么
记住的是说关系运算的优先级
是高于赋值运算的
比如说
我们在这个式子里边
最终是你要把这个算式的结果
赋值给A
而不是说我把I先赋值给A
如果赋值运算符的优先级高的话
那就是说先把I赋值给A
是因为赋值运算符的优先级别
在我们前面讨论过的运算里边
它是最低的
所以它是要把
等号后边所有式子的结果求出值来
才能赋值给它
所以它的优先级是最低的
对于关系运算符和赋值相比
关系运算符比它高
但是比算术运算符低
比如说我们再看一个给A赋值
赋谁 赋这边这个式子
这边这个式子是说
18大于5吗
再后边也是一个大于
再后边也是一个小于
再后边是相除
按照我们刚才的说法
大家心里想想
这个C里边是先判断18大于5吗
还是先判断说1除以2
在许多语言里边它是这样
按优先级算术优先级的级别高
那它就会先去做1除以2
但是C不是
C里边永远都是从前向后算
算到这一步有没有障碍
怎么叫有没有障碍
比如说18大于5吗
它后边紧接着是大于
这两个大于号是同级的
它们是同级
如果说
5后边不是一个大于号
5后边是一个加
这件事就不一样了
也就说18大于5吗
这个大于号的优先级
比这个加的优先级低
那就应该先算的是
比如说
我们把这个式子改成了这样子
大家看
这个情况就不同了
大家看这个式子
我们现在说
我这一块要做先做这个双目运算
还是先做5加1的双目运算呢
它们之间起了冲突
是 这时候就要比优先级
那我一定是先做加法的
那这时候C先来做5加1得6
然后下边比较的是说
18大于6吗
大家会不会说你先做完加法
你为什么不再去做除法呢
C的游戏规则永远是从前向后的
我们刚才说过
它走这一步
它为什么不先做这个
关系比较而去做加法
是因为它走不动了
是这两个运算符起了冲突
大于和加起了冲突
所以
这个优先级高先做加法
这个加完了以后
再剩下的运算符就是大于小于
没有冲突了
所以它就先比较大于
说18大于6吗 YES
比较的结果是真的真的值是1
那现在说
1小于1除以2吗
这冲突了
你要做小于又有除
那是除的优先级高
所以先做除
1除以2得什么
得0.5吗
这前面我们强调过整数相除要小心
1除以2的结果
不是0.5是0
小数扔掉了
因为你是两个整型数做运算
所以是0
那现在是说这个结果是0
前边刚才比较的结果是1
1小于0吗
当然不是了
整个这个式子的结果
现在的结果是0
那赋值给A的是0
我们刚才说
如果不是这样子
我这是一个大于号
那情况就不一样了
大家看如果我是大于号的话
它是这样
这个是大于这个是大于它俩是平级
那去算18大于5吗 YES
得真值1
接下来是1大于1吗
要去做这个比较吗
是看后边是谁
后边是小于
它俩也是同级
大于和小于都是同级
当然先做这个
那1大于1吗
不是 那就得0
前面这个结果0
0小于后边的东西吗
后边的东西有冲突吗 有
后边的东西是除法吗
先算除法
除得的结果我们刚才说了是0
0小于0吗 NO
那结果是假
运算的结果是假
A的值是0
我们这样得到的A的值是0
但是运算过程里边
优先级是不一样的
所以
我们说这个
如果是关系运算和算术运算
混合在一起
和赋值运算混合在一起的时候
大家注意原则是
算术运算优先
下来是关系运算
最后才是赋值运算
而在算术运算里边是
乘除和求余是同一级的
高于加减
而在关系运算里边
大于 大于等于 小于 小于等于
这四种运算级别是高于不等于
在关系比较问题
以及它的C语言表达里边
优先级是一个非常重要的一个方面
把一个实际问题
实际需要关系比较的问题
表达成一个
C语言的关系表达式
在这个过程里正确表达的关键是说
你的优先级要掌握好
好 这块结束
-1.1 计算机的问题求解方法
--讨论题:数学模型
-1.1 计算机的问题求解方法--作业
-1.2 C语言与C程序
--讨论题:运算符
-1.3 C语言处理系统与程序调试运行
--例程
-1.4 程序中的人机交互
--例程
--作业讨论区
-2.1 算术运算的C程序实现
--算术混合运算.c
-2.1 算术运算的C程序实现--作业
-2.2 关系运算的C程序实现
--bukao.c
--字符比较.c
--讨论题:比较大小
-2.2 关系运算的C程序实现--作业
-第二周作业--作业
-2.3 逻辑运算的C程序实现
--计算结合性
--闰年.c
--自动购票问题.c
-2.3 逻辑运算的C程序实现--作业
-2.4 位运算的C程序实现
--讨论题:位运算
-2.5 几种很个别的运算
--讨论题
--讨论题
-2.5 几种很个别的运算--作业
-2.6 混合运算及数据类型转换
--讨论题:数据类型
-2.7 顺序结构程序实例
--Video
--三角形面积.c
--讨论题:工业产值
-2.7 顺序结构程序实例--作业
-3.1 程序中的路径选择实现
--打印学生成绩.c
--一元二次方程.c
-3.1 程序中的路径选择实现--作业
-3.2 路径中的再选择——嵌套判断
--例程
--讨论题:程序改错
-3.2 路径中的再选择——嵌套判断--作业
-3.3 复杂判断问题的C程序设计
--3.3 多级选择
--银行存款.c
--讨论题:多级选择
-3.4 多分支问题的C程序设计
--加减乘除运算.c
-3.4 多分支问题的C程序设计--作业
-3.5 GOTO的适当使用
-3.6 选择结构的程序实例
--3.6 程序展示
--计算第几天.c
--讨论题:输出奇数
--讨论题:计算税金
-3.6 选择结构的程序实例--作业
-第四周作业--作业
-4.1 需要重复执行的程序
--求和.c
--打印学生成绩.c
--统计录入速度.c
--求平均数.c
-4.1 需要重复执行的程序--作业
-4.2 至少要执行一次的循环
--n的阶乘.c
--字符分类统计.c
-4.2 至少要执行一次的循环--作业
-4.3 已知循环次数用for语句
--求和问题.c
--数列求和.c
--讨论题:循环语句
-4.3 已知循环次数用for语句--作业
-4.4 循环控制——简单循环应用
--水仙花数.c
--讨论题:死循环
--讨论题:猜数字
-循环结构的程序设计(一)--4.4 循环控制——简单循环应用
-4.5 循环的嵌套
--讨论题:程序运行
-4.5 循环的嵌套--作业
-4.6 break与continue
--最大素数.c
-4.6 break与continue--作业
-4.7 循环的综合应用
--数的排列组合.c
--鸡兔同笼.c
--打印空心字符.c
--讨论题:打印图形
--讨论题:计算闰年
-第六周作业
-第六周作业--作业
-5.1 同类有序数据处理问题
-5.2 一维数组的定义和引用
--数组定义.c
--数组初始化.c
--反向输出.c
--讨论题:对称数
-5.2 一维数组的定义和引用--作业
-5.3 一维字符串数组
--讨论题:编程
-5.4 字符串处理函数
--字符串反向.c
--字符串函数
-5.5 二维数组的定义与使用
-5.6 二维数组的输入输出
-5.6 二维数组的输入输出--作业
-5.7 二维数组的应用
--转置矩阵.c
--讨论题:修改程序
-5.8 二维字符数组
--5.8 单词排序
--单词排序.c
-5.8 二维字符数组--作业
-5.9 数组综合应用
--统计成绩.c
--统计字符次数.c
--讨论题:洗牌
-本期课程结束语
--end
-第八周编程作业
-《C语言程序设计(上)》期末复习参考
--html
-《C语言程序设计(上)》期末复习参考答案
--html