当前位置: 首页 > news >正文

05-2基于vs2022的c语言笔记——表达式

目录

5-8-1表达式的概念

1.算术表达式

2.赋值表达式

2-1先介绍一个概念,表达式的结合性

2-2赋值表达式的结果是赋值符号有右边的值

 3.关系表达式

4.逻辑表达式

 4-1(a==0)&&(b==0)和!a&&!b等价

 4-2一元运算符和二元运算符的优先级初识

5.逗号表达式

6.位表达式

5-8-2运算符的优先级

1.总结了几条规则,可以应对大多数情况,如果有特殊情况则查看表格

2.下面对一些表达式进行分析 

 5-8-3表达式的结合性

总结


前言

本套笔记是基于英雄哪里出来c语言入门到精通课程整理的笔记

包含代码,代码演示结果,以及便于理解的插图

对于想要c语言入门,嵌入式c语言的入门的朋友来说,这是一套不可多得的教程

此教程分几篇文章发布,初步计划更新到函数,未来时间允许会继续更新

5-8-1表达式的概念

表达式就是由运算符,常量,变量组合在一起的式子

1.算术表达式

#include <stdio.h>
int main() {
    int a = 1, b = 2, c = 3, d = 4;
    //a + b + c + d;
    //a * b - c + d;
    printf("%d\n", a + b + c + d);//10
    printf("%d\n", a * b - c + d);//3

    return 0;
}

2.赋值表达式

2-1先介绍一个概念,表达式的结合性

表达式的结合性是在表达式中,当多个运算符具有相同优先级时,用来确定计算顺序是怎样的。结合性可以分为左结合性和右结合性:

1. **左结合性**:运算符从左到右依次计算。例如,表达式 `a + b + c` 被解释为 `(a + b) + c`,因为加法运算符是左结合的
2. **右结合性**:运算符从右到左依次计算。例如,表达式 `a = b = c` 被解释为 `a = (b = c)`,因为赋值运算符是右结合的

a = (b = c) c的值赋值给b,b=c这个表达式的值赋值给a,那b=c这个表达式的值是多少呢?

请看2-2

2-2赋值表达式的结果是赋值符号有右边的值

这样的理论可以用来理解下面的代码

 3.关系表达式

我们先来复习一下关系运算符都有哪些
>
>=
=
!=
<
<=

关系表达式的输出结果只有0和1两种,0表示带入数值后表达式不成立,1表示带入数值后表达式成立

具体演示如下

#include <stdio.h>
int main() {
    int a = 0, b = 3, c = 3, d = 4;
    printf("%d\n", a > b);//a > b显然不成立,输出0
    printf("%d\n", a < b < c);
    //注意关系表达式满足左结合性,也就是从左往右计算
    //(a<b)<c a<b显然成立所以输出1 1<c也成立,所以最终输出1
    printf("%d\n", a > b > c < d);//1
    return 0;
}

4.逻辑表达式

其实就是逻辑运算符和变量,常量组合在一起的式子

我们这里举几个实例,以及对下一节课的运算符的优先级做一些引入

 4-1(a==0)&&(b==0)和!a&&!b等价

为什么等价呢?我们从几个角度分析

1.运算符的含义

a==0 的返回值取决于a是否为0

a=0时,a==0返回1

a≠0时,a==0返回0

!a的返回值取决于a是否为0

a=0时,!a返回值为1

a≠0时,!a返回值为0

从这个角度来说,a==0与!a等价

2.等价性推导

a=0时,a==0返回值为1,!a返回值为1

a≠0时,a==0返回值为0,!a返回值为0

 4-2一元运算符和二元运算符的优先级初识

一元运算符比二元运算符优先级高,因此无论!a和!b加不加括号,都是先算!a和!b

5.逗号表达式

看一个例子

6.位表达式

同样举个例子

5-8-2运算符的优先级

1.总结了几条规则,可以应对大多数情况,如果有特殊情况则查看表格

1.小括号的优先级最高,如果记不住其他运算符之间的优先级,就多加小括号。同时我们也习惯用小括号来体现和分析优先级,小括号里的优先级高
2.优先级,一元运算符>二元运算符>三元运算符
  常见的一元运算符:!非 ~按位取反 ++自增 --自减
  常见的二元运算符:算术运算符(+,-,*,/,%)赋值运算符(=,+=.-=,*=,/=,%=)关系运算符(==,!=,>,>=,<,<=)逻辑运算符(&&,||)逗号运算符(,)
                 位运算符(&,|,^,<<,>>)
  唯一的三元运算符:条件运算符?: 在学完if语句后会详细介绍
3.算术运算符>关系运算符>位运算符>逻辑运算符
4.!>&&>||
5.逗号优先级最低,赋值符号次之。也就是记住逗号和赋值符号优先级排最后

 

2.下面对一些表达式进行分析 

以下利用小括号来体现优先级,括号计算后缀自增和一元运算
例1:a||~b&&c++==d-2*a>7
    1
    c++:先取后加。
    ~b:对b按位取反。
    2.处理算术运算
        2*a:计算乘法。
        d - (2*a):计算减法。
    3.关系比较和等于判断
    (d - 2*a) >7:结果为true(1)或false(0)。
    c++ == (上述结果):比较c的原值是否等于上述结果
    等于返回1,不等于返回0。
    4.逻辑运算
    ~b && (c++ == ...)
    a || (上述结果)
例2:!a||!b
    1.先计算!a和!b
    2.再进行逻辑或||运算
例3:a*2-b<c&&c*4-d*3==0
    1.先计算算术运算符
    (a*2-b)<c&&(c*4-d*3)==0    
    2.进行关系运算符判断
    (a*2-b)<c --> 得出结果A 0或1            (c*4-d*3)==0  --> 得出结果B 0或1
    3.结果A&&结果B
例4:!a||!b&&c
    1.先计算!a和!b
    2.再计算!b&& c--> 得出结果 0或1 
    3.!a||上述结果
例5:a=4,b=a=4,d=5,c=6;
    (a=4),(b=a=4),(d=5),(c=6);

 5-8-3表达式的结合性

基本介绍:

表达式的结合性是在表达式中,当多个运算符具有相同优先级时,用来确定计算顺序是怎样的。结合性可以分为左结合性和右结合性:

1. **左结合性**:运算符从左到右依次计算。例如,表达式 `a + b + c` 被解释为 `(a + b) + c`,因为加法运算符是左结合的
2. **右结合性**:运算符从右到左依次计算。例如,表达式 `a = b = c` 被解释为 `a = (b = c)`,因为赋值运算符是右结合的

注意满足左结合性的运算符很多,所以只用单独记忆满足右结合的运算符

1.单目运算符,也就是一元运算符 拿~按位取反来举例,~a,只有先得出a的值,才能进行按位取反操作,所以是从右往左计算的

2.条件运算符 ?:在第六章进行介绍

3.赋值运算符:

    举个例子

总结

以上就是运算符和表达式的全部内容了(运算符的内容看基于vs2022的c语言笔记05-1——运算符)

运算符和表达式均是采用分类介绍的方法,实际上多种运算符之间组合,可以构成无数个表达式,都可以利用运算符,以及表达式的原则,优先级和结合性进行解决。

之后遇到什么新的运算符,以及表达式有需要注意的事项,遇到的时候再进行补充。

相关文章:

  • Mysql-经典故障案例(1)-主从同步由于主键问题引发的故障
  • 深度学习Save Best、Early Stop
  • Quadrotor-NMPC-Control 开源项目复现与问题记录
  • 03.06 QT
  • ComfyUI进阶教程核心要点与详解
  • 多模态模型在做选择题时,如何设置Prompt,如何精准定位我们需要的选项
  • 【Kubernetes 指南】基础入门——Kubernetes 基本概念(四)
  • Python在DevOps中的应用:自动化CI/CD管道的实现
  • 【电控笔记z29】扰动估测器DOB估测惯量J-摩擦系数B
  • 私有云基础架构与运维(一)
  • Mybatis中的设计模式
  • SpringBoot+Vue 多模块(子父工程)项目的注册登录及增删改查
  • 软件工程画图题
  • leetcode202 快乐数 哈希结构 集合
  • Ubuntu 安装docker docker-compose
  • 颠覆传统软件测试!Browser Use WebUI+DeepSeek:软件测试行业的革命性突破
  • 深入剖析Android Service:原理、生命周期与实战应用
  • Python中判断静态方法的六种方式
  • 物联网系统搭建
  • 【橘子golang】从golang来谈闭包
  • 500网站建设/网站排名大全
  • 珠海网站/正版google下载
  • 镇江企业做网站/火爆产品的推广文案
  • 深圳网站建设费用多少/seo排名快速
  • 网站关键词排名优化电话/手机百度搜索app
  • 手机wap网站建设多少钱/如何做网站推广私人