网站LOGO
云与雾Blog
页面加载中
11月21日
网站LOGO 云与雾Blog
分享你我所热爱的。
菜单
  • 云与雾Blog
    分享你我所热爱的。
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    C语言笔记---(4)运算符及表达式篇
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。

    C语言笔记---(4)运算符及表达式篇

    小北 · 原创 ·
    👑C语言📓学习笔记 · 暂无标签
    共 5050 字 · 约 4 分钟 · 885
    本文最后更新于2023年04月03日,已经过了598天没有更新,若内容或图片失效,请留言反馈

    一、表达式

    1.表达式是什么

    一个或多个运算对象与零个或多个运算符组成的式子叫做表达式

    每个表达式都有一个结果
    C 代码:
    printf("%d\n" 5+10);    //表达式结果为:15

    2.表达式语句

    在表达式后边加上;就构成了表达式语句,C语言中表达式不能单独存在,必须以表达式语句的方式存在。

    C 代码:
    100;
    5+10;
    a/b;
    a*10/b+c;
    C 代码:
    printf("%d\n" 5+10);    //5+10表达式为什么后边没有;号,是因为5+10在这个语句中是函数调用表达式的子表达式。
    函数名加括号运算符构成了一个函数表达式。

    二、运算符

    在C语言中,运算符有非常的多。它内置的运算符丰富到令人头皮发麻,但同时给了我们对代码的更多操作性。

    • 算术运算符
    • 关系运算符
    • 逻辑运算符
    • 位运算符
    • 赋值运算符
    • 杂项运算符

    1.算术运算符

    算术运算符专门用于算术运算,主要有下面几种。

    一元运算符指的是只有一个运算对象,反之,二元运算符是指有两个运算对象。
    • +:正值运算符(一元运算符)
    • -:负值运算符(一元运算符)
    • +:加法运算符(二元运算符)
    • -:减法运算符(二元运算符)
    • *:乘法运算符
    • /:除法运算符
    • %:余值运算符
    名称运算符号描述举例
    正值运算符+表示这个操作数为正数+12(它是+12)
    负值运算符-表示这个操作数为负数-12(它是-12)
    加法运算符+添加两个操作数2+10=12
    减法运算符-从第一个减去第二个操作数12-2=10
    自增运算符++自增运算符将整数值增加1int a = 1; a++
    自减运算符--自减运算符将整数值减小1int a = 1; a--
    乘法运算符*将两个操作数相乘2*6=12
    除法运算符/将两个操作数相除12/2=6
    余值运算符(求余运算符)%将操作数相除后取余12%5=2

    (1)+ -

    这两个运算符既可以当做一元运算符,也可以当做二元运算符
    所谓一元运算符,指的是只需要一个运算数就可以执行。一元运算符-用来改变一个值的正负号。

    C 代码:
    int num = -1;
    int num2 = +num;
    这段代码中的-1变为了-1。正号+对正负值没有什么影响,+不会改变正负值,可加可不加。

    二元运算符+ -也就是用他们来完成加减法。

    C 代码:
    int x = 6 + 6;
    int y = 13 - 1;

    (2)*乘法运算符

    运算符*用来完成乘法。

    C 代码:
    int num = 2 * 6;
    printf("%i", num); // 输出12
    // 或者
    int num = 6;
    printf("%i\n", num * num);//输出 36

    (3)/除法运算符

    运算符/用来完成除法。注意,两个整数相除,得到还是一个整数。

    C 代码:
    float x = 6 / 4;
    printf("%f\n", x); // 输出 1.000000

    上面示例中,尽管变量x的类型是float(浮点数),但是6 / 4得到的结果是1.0,而不是1.5。原因就在于 C语言里面的整数除法是整除,只会返回整数部分,丢弃小数部分。

    如果希望得到浮点数的结果,两个运算数必须至少有一个浮点数,这时 C 语言就会进行浮点数除法。

    C 代码:
    float x = 6.0 / 4; // 或者写成 6 / 4.0
    printf("%f\n", x); // 输出 1.500000

    上面示例中,6.0 / 4表示进行浮点数除法,得到的结果就是1.5

    小测试:

    C 代码:
    int score = 5;
    score = (score / 20) * 100;
    printf("%i", score);

    这段代码的运行结果是什么?
    如果你的运算结果为25,那么恭喜你,错了。回去好好再看一次笔记
    如果你的运算结果为0,那么恭喜你,对了。继续看笔记吧。

    为了得到预想的结果(运算结果为25),可以将除数20改成20.0,让整除变成浮点数除法。

    C 代码:
    score = (score / 20.0) * 100;

    (4)%求余运算符(取模运算符)

    运算符%表示求模(取余)运算,即返回两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数。

    C 代码:
    int x = 12 % 5;
    printf("%i", x); // 2

    负数求模的规则是,结果的正负号由第一个运算数的正负号决定。

    C 代码:
    11 % -5 // 1
    -11 % -5 // -1
    -11 % 5 // -1

    上面示例中,第一个运算数的正负号(11或-11)决定了结果的正负号。

    (5)赋值运算的简写形式

    如果变量对自身的值进行算术运算,C 语言提供了简写形式,允许将赋值运算符和算术运算符结合成一个运算符。

    • +=
    • -=
    • *=
    • /=
    • %=

    下面是一些例子。

    C 代码:
    i += 3;  // 等同于 i = i + 3
    i -= 8;  // 等同于 i = i - 8
    i *= 9;  // 等同于 i = i * 9
    i /= 2;  // 等同于 i = i / 2
    i %= 5;  // 等同于 i = i % 5

    2.自增、自减运算符

    C 语言提供两个运算符,对变量自身进行+ 1和- 1的操作

    • ++:自增运算符
    • --:自减运算符
    C 代码:
    i++; // 等同于 i = i + 1
    i--; // 等同于 i = i - 1

    1.前置自增(减)运算符

    前置运算——运算符都放在变量之前:++变量名--变量名,如++i --i。它先使变量的值增或减1,再以变化后的值参与其他运算,即先自增(或先自减)后运算。

    2.后置自增(减)运算符

    后置运算——运算符放在变量之后:变量名--变量名++如:i++ i--。它使变量先参与其他运算,再使变量的值增或减1,即先运算后自增(或后自增)。

    3.常用运算符优先级

    标记操作符类型优先级
    ++--自增、自减后缀16
    ++--自增、自减前缀15
    +-正号,负号单目15
    */%乘、除、取余双目13
    +-加、减双目12
    =赋值双目2

    3.关系运算符

    1. < 小于
    2. <= 小于或等于
    3. > 大于运算符
    4. >= 大于或等于
    5. == 等于
    6. !=不等于
    关系运算符优先级.png关系运算符优先级.png

    4.逻辑表达式

    (1)逻辑运算符

    运算符含义含义
    &&逻辑与
    ` `逻辑或
    !逻辑非
    逻辑运算符优先级.png逻辑运算符优先级.png

    (2)逻辑表达式

    C语言计算机逻辑表达式的值判断量的真假
    1非0
    00

    总结

    标记操作符类型优先级
    ++ --自增、自减后缀16
    ++ --自增、自减前缀15
    !逻辑非单目15
    + -正号、负号单目15
    * / %乘、除、取余双目13
    + -加、减双目12
    < > <= >=关系双目10
    == !=逻辑与双目9
    ` `逻辑或双目5
    ?:条件三目3
    =赋值双目2
    声明:本文由 小北(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    我要发表评论 我要发表评论
    博客logo 云与雾Blog 分享你我所热爱的。 51统计
    MOEICP 萌ICP备20228088号 ICP 晋ICP备2021016398号 又拍云 本站由又拍云提供CDN加速/云存储服务

    💻️ 小北 11月8日 在线

    🕛

    本站已运行 3 年 278 天 23 小时 28 分
    云与雾Blog. © 2021 ~ 2024.
    网站logo

    云与雾Blog 分享你我所热爱的。