为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第8天【养成记】嵌入式挑战第8天,C语言中的运算符:算数运算符、自增加和自减少、关系运算符、逻辑运算符

标签:
嵌入式

课程章节:

  • 课程名称:物联网/嵌入式工程师
  • 章节名称:第1周之第四讲 3-5 算数运算符、自增加和自减少、关系运算符、逻辑运算符
  • 讲师姓名:大白老师

课程内容:

C语言中的运算符

算数运算符

运算符 含义
+ 数据相加
- 数据相减
* 数据相乘
/ 数据相除
% 数据求余,要求两边的运算符必须为整数。

课后任务

练习

int a;
int x,y,z;
要求用户从键盘输入一个三位数的整数赋值给a,然后要求把该三位数的
百数,十位,个位求出来。赋值给x,y,z并输出。
例如:
a = 456;
x = 4;
y = 5;
z = 6;

代码:

#include <stdio.h>
#include <termios.h>
#include <unistd.h>

int main()
{
    int x,y,z,ret,a;
    again:
    printf("请输入三位数的整数:\n");
    ret = scanf("%d",&a);

    if (ret != 1)
    {
        while (getchar() != '\n');
        goto again;
    }

    if (a > 1000 || a < 99)
    {
        printf("输入不正确,请重新输入。\n");
        goto again;
    }

    x = a / 100;
    y = a % 100 / 10;
    z = a % 10 ;

    printf("x = %d \nz = %d\ny = %d\n",x,y,z);

    return 0;
}

自增加和自减少

代码示例:

#include <stdio.h>

int main()
{
    int a = 10,b = 0;

    b = a ++;//b = a;a = a + 1;
    printf("a = %d b = %d\n",a,b); //11,10

    b = ++a; //a = a + 1 b = a;
    printf("a = %d b = %d\n",a,b);//12,12

    return 0;
}

课后练习

练习
求出下列数据的答案。(上一个表达式x,y的值会影响下面x和y的值)

#include <stdio.h>

int main()
{
    int x = 10 ,y =20;
    int z = 0;

    z = (++x) + (y++);
    printf("z = %d\n",z);

    z = (--x) + (y++);
    printf("z = %d\n",z);

    z= (++x) + (--y);
    printf("z = %d\n",z);

    printf("x = %d y = %d\n",x,y);
    return 0;
}

分析结果:

= 10 + 1 + 20 (+ 1)
= 31
x = 11 y = 21 z = 31

= 11 - 1 + 21 (+ 1)
= 31
x = 10 y = 22 z = 31

= 10 + 1 + 22 - 1
= 32
x = 11 y = 21 z = 32

关系运算符

运算符

运算符 含义
> 大于条件成立的时候,运算的结果为真
= 大于或等于条件成立的时候,运算的结果为真
< 小于条件成立的时候,运算的结果为真
<= 小于或等于条件成立的时候,运算的结果为真
== 等于条件成立的时候,运算的结果为真
!= 不等于条件成立的时候,运算的结果为真

说明

  • C语言中规定,关系表达式值只有两个 0 (假)和 1 (真)。
  • =和== 不同, =表示赋值操作,==表示逻辑判断是否相等。
  • 一般C语言中定义,0为假,非0为真。

代码示例

#include <stdio.h>

int main()
{
    int data = 0;

    printf("please input a data : ");
    scanf("%d",&data);

    printf("data > 30 = %d\n",data > 30); //1
    printf("data == 30 = %d\n",data == 30); //0

    printf("============================\n");

    printf("data = 800 : %d\n",data = 800); //800
    printf("data != 800 : %d\n",data != 800);//0
    printf("============================\n");

    //数学:10 < data < 20 ===> 10 < data  结果为0或1
    //                         0或1 < 20  结果 1
    printf("10 < data < 20 : %d\n",10 < data < 20);

    return 0;
}

课后练习

练习
从键盘输入2个字符数据,要求数据>,<,!=三个的结果。

#include <stdio.h>

int main()
{
    int a,b;
    printf("请输入两个2个字符数据:\n");
    scanf("%d",&a);
    scanf("%d",&b);

    printf("a => %d , b => %d\n",a,b);
    printf("\n");

    printf("a > b => %d\n",a > b);
    printf("a < b => %d\n",a < b);
    printf("a != b => %d\n",a != b);

    return 0;
}

逻辑运算符

基本使用

  • && 都真则真,一假则假
  • || 都假则假,一真则真
  • ! (假->真,真->假)

代码示例

#include <stdio.h>

int main()
{
    int a = 0,b = 0;
    int ret = 0;

    printf("please input two data : \n");
    scanf("%d%d",&a,&b);

    // &&的规则:都真则真,一假则假
    // ret = a > b && a != 30;
    // printf("ret = %d\n",ret);

    // ||的规则: 一真则真,都假则假
    ret = a > b || a != 30;
    printf("ret = %d\n",ret);


    return 0;
}

短路特性

  • && 短路特性:表达式1为假,表达式2不会执行
  • || 短路特性:表达式1为真,表达式2不会执行

代码示例:

#include <stdio.h>

int main()
{
    int a = 7,b = 9,c = 1;
    int ret = 0;

    //&&符号的短路特性: 表达式1为假,那么整个表达式的值就已经为假了,表达式2不会执行
    ret = a > b && c ++;
    printf("ret = %d c = %d\n\n",ret,c); //0,1

    printf("+++++++++++++++++++++++++\n");

    ret = a < b && c ++;
    printf("ret = %d c = %d\n\n",ret,c); //1,2

    printf("========================================\n");

    c = 1;

    //||符号的短路特性: 表达式1为真,那么整个表达式的值就已经为真了,表达式2不会执行
    ret = a > b || c ++;
    printf("ret = %d c = %d\n\n",ret,c); //1,2

    printf("+++++++++++++++++++++++++\n");

    ret = a < b || c ++;
    printf("ret = %d c = %d\n\n",ret,c); //1,2
    return 0;
}

学习笔记:

课后练习

练习
要求大家用笔算出下列printf输出的结果

int value = 0;
int a = 0;
int b = 1;

value = a && b;
printf("%d\n",value); a=0 b=1 value=0

value = a || b;
printf("%d\n",value); a=0 b=1 value=1

value = a++ && b ++; 
printf("%d\n",value); a=1 b=1 value=0

value = --a || b--; 
printf("%d\n",value); a=0 b=0 value=1

value = (a + b) || (a - b); 
printf("%d\n",value); a=0 b=0 value=0

value = (a * b) && (a + b); 
printf("%d\n",value); a=0 b=0 value=0

value = !a;
printf("%d\n",value); value=1

printf("%d,%d,%d\n",a,b,value);  a=0 b=0 value=1

课程评价:

通过运算符的知识学习,熟练掌握一些算法的应用。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消