首页 > 其他分享 >嵌入式小白第三天——数据类型 运算符 表达式

嵌入式小白第三天——数据类型 运算符 表达式

时间:2024-07-26 21:27:34浏览次数:10  
标签:10 运算 ++ 数据类型 嵌入式 运算符 int 表达式

目录

运算符 表达式

运算符

1.运算符的优先级和结合性

2.运算的对象的个数

3.表达式

4.算术运算(+ - * / %)

/ 号

%号

5.自增运算符与自减运算符(++ --)

a++与++a区别

左值与右值

问题

6.赋值运算

7.逗号运算(顺序求值运算)

8.强制类型转换

9.隐式类型转换

10.不同类型间的混合赋值

补充:

数据类型之转义字符

基本的编程思路

错误分析


运算符 表达式

运算符

1.运算符的优先级和结合性

运算规则:不同优先级的运算混合时,高优先级的运算符先结合;同一优先级的运算混合运算时,按结合性方向进行结合。

2.运算的对象的个数

分为单目、双目,三目;

3.表达式

表达式是由运算符和运算数构成的字符序列,用于表示计算值;

所以表达式都是有值的,都是有数据类型的;

4.算术运算(+ - * / %)

注意事项:

/

1.如果是两个整型的数相除,结果是等于整数,这个过程相当于整除的效果;

2.除数不能为0;

%

1.除数不能为0;

2.在求余运算中,运算数只能是整数,不能是小数;

3.结果的符号是由左操作的符号决定(eg:10 % 3  = 1  ;10 % -3 =1 ;-10 % 3=-1;-10               % -3 =-1);

4.在printf中使用%时,需要打两个%%,不然会被识别为输出类型;

%的应用:

判断一个数x是奇数还是偶数:x%2 == 1时为奇数;x%2 ==2时为偶数;

对一个数N求余时,余数的范围是0~N-1;

5.自增运算符与自减运算符(++ --)

++ :它表示的是一个量一次增加1

a++与++a区别

i++是后置加加1,它是先用表达式的结果后i自增;++i是前置加加1,它是先i自增后再用表达式的结果。

注意:1.i++和++i如果两个是单独使用,则两个在效果上没有区别;

           2.先用后加或先加后用在参与别的运算中才能发挥作用;

           3.运算数i必须是一个可变的量;

           4.浮点型也能够自增自减;

左值与右值

出现报错error:lvalue required as increment operand时

lvalue的意思是left value(左值)

通俗的定义:以赋值符号=为界,=左边的就是左值,=右边就是右值。eg:int b=3;a = b;a为左值,b为右值。

const int a = 10;const是constant(常变量:定义的是常量,但又有变量的属性),a其实还是一个变量,但是只能读不能修改。

更深层次可以将lvalue理解为localtion value,表示可定位的左值(像变量),而右值不可定位(像常量);

用表达式&a(取地址运算) 获取a对应的内存空间的首地址编号

问题

(1)问:i++与++i哪个的效率高?

         答:++i的效率更高,因为它不需要额外的开空间,i++则需要另开一个空间用来存放表达式的结果。

(2)运算i+++++i

运用贪心法:从左到右逐个扫描,将字符尽可能多的结合成c语言运算符

所以表达式应该是(i++)++)+i,但是i++为右值所以编程是错误的

(3)调用函数printf(“%d,%d”,i,i++)

因为有的系统从左到右求值,有的系统从右向左求值,i++先用后加手势没有统一规定值什么时候加的,所以建议将代码写成int p = i;q=i++;printf(“%d,%d”,p,q);总之不要写出别人看不懂的,也不知道系统会怎么样执行程序。

6.赋值运算

赋值符号 = 就是赋值运算符,它的作用是给变量赋值

eg :int a ;

a =10;它是一个赋值运算,也是赋值表达式,同时它的结果也是a的值,类型也是a的类型

(+=)(-=)等赋值可以简化代码。

7.逗号运算(顺序求值运算)

语法结构:表达式1,表达式2,表达式3,.....,表达式N;

运算过程:从左到右依次运算,运算表达式的结果是整个语法中最后一个表达式的结果。

注:每个表达式都会计算完

8.强制类型转换

定义:就是通过自己动手转换

语法结构:(转换的类型)运算数

注:强制转换不会影响本身的运算数

9.隐式类型转换

从右到左必转

从下到上,低精度往高精度转

char,short类型运算时会转换成int类型

float类型运算时会转成double类型

低精度和高精度做混合运算时,低精度会往高进度转

eg:int a = 10 ,b = 3 ;printf("a/b=%f\n",a*1/b)为int型;

         int a = 10 ,b = 3 ;printf("a/b=%f\n",a*1.0/b)为double型

10.不同类型间的混合赋值

高精度给到低精度

double/float 型给到int 型,值会精度丢失,只剩下整数部分;

长类型给到短类型

long给到int ;int给到short;float给到char,值会被高位拦截,只留低位;

短类型给到长类型

看有无符号:无符号时段类型给到长类型,值在高位补0;有符号时短类型给到长类型,值符号位扩展,符号位是0时,高位补0;符号位是1时,高位补1。

补充:

数据类型之转义字符

\n 换行字符   'a' 铃声字符;

\t 跳到下一个制表符(Tab—8个字符宽度);

\b 退一格,后面数据将前面一格的数据顶掉,当数据是‘\n’换行时直接换到下一行不顶掉前面数据;

\r 将当前位置的后面的数据移到最前面,并且覆盖掉前面的数据;;

\f 将当前位置后面的数据移到下一行的这个位置,并且当作开头;

\\   代表一个反斜杠字符;

\' 代表一个单引号字符;

\" 代表一个双引号字符;

\ddd 1到3位八进制所代表的字符;

\xdd 1到2位十六进制所代表的字符;

基本的编程思路

1.理解问题:首先通过理解问题的需求,能够知道需要什么变量,什么常量,什么数据,需要得到什么对应的数据;

2.准备数据:按照问题需要的数据,准备输入变量数据;

3.处理数据:对输入的变量数据进行操作;

4.输出数据:输出处理好的变量数据,在输出不对的数据时再进行对代码的查找修改错误;

错误分析

1.如果是在编译时报出错误,它是语法错误,此时应该检查代码的语法是否有问题;

2.如果是在运行时出现错误,则它是逻辑问题,此时应该检查思路或者逻辑是否有问题;

标签:10,运算,++,数据类型,嵌入式,运算符,int,表达式
From: https://blog.csdn.net/weixin_68641081/article/details/140685283

相关文章

  • 嵌入式领域的专业名词大揭秘
    在嵌入式这个充满技术魅力和创新挑战的领域中,有许多特定的专业名词,对于初学者或者想要深入了解的朋友来说,熟悉这些名词是踏入嵌入式世界的重要一步。下面就让我们一起来探索一下嵌入式领域常见的专业名词。https://ad.pdb2.com/l/CPCeKnK8DHfjEiN1.微控制器(MCU):可以把它想象成......
  • 为什么越来越多的人要转行做嵌入式呢
    在当今的科技领域,嵌入式系统的应用无处不在,从智能家居到工业控制,从汽车电子到医疗设备。与此同时,我们也发现越来越多的人选择转行进入嵌入式领域,这背后究竟有着怎样的原因呢?一、行业需求持续增长随着物联网、人工智能等技术的飞速发展,嵌入式系统作为这些技术的重要支撑,市场需......
  • 嵌入式Python、ROS、SLAM、WebSocket和Node.js:智能巡逻监控安防机器人设计流程(代码示
    项目概述随着智能技术的发展,智能巡逻机器人在安防、监控和巡逻等领域的应用越来越广泛。本文将介绍一个结合嵌入式系统、机器人技术和后端开发的智能巡逻机器人。该机器人能够自主导航,实时检测异常情况(如火灾或入侵者),并将数据发送到后端服务器,以实现高效的监控和应急响应。主......
  • 0基础学嵌入式day01
    一、C语言概述    1、什么是程序        程序是为了解决某些问题或者实现某些功能的一系列有序指令的集合。    2、计算机语言简史        第一代机器语言:由0和1组成的二进制机器码。        第二代汇编......
  • EMS/PCS/BMS/充电桩/逆变器新能源设备处理器选型-米尔嵌入式
    随着全球对可持续发展的日益关注,新能源技术作为替代传统能源的重要选择,正迅速发展并深入各个领域。在这一技术革新的浪潮中,嵌入式技术作为关键的智能化解决方案,正在为新能源行业的发展注入新的动力和创新。本文旨在为新能源行业的开发者解决嵌入式处理器选型难题。1.米尔嵌入式处......
  • 不使用 + 或 - 运算符 | 添加 2 个数字Python
    我一直在尝试编写逻辑,但测试用例失败。如何改进我的代码?代码:#Giventwointegersaandb,returnthesumofthetwointegerswithoutusingtheoperators+and-.a=-1b=1min_val=min(a,b)max_val=max(a,b)ifmin_val==max_val:pr......
  • 数据类型
    一、基本数据类型bytebyte数据类型是8位、有符号的,以二进制补码表示的整数;最小值是-128(-2^7);最大值是127(2^7-1);默认值是0;byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一;例子:bytea=100,byteb=-50。......
  • Selenium WebDriverWait 无法检测用于使用 Selenium 提交嵌入式视频答案的表单元素
    我一直在使用Selenium编写一个机器人来自动化学校强迫我做的系列教程。在本教程中,有一个视频在中途提示用户填写表格和一些问题。我一直在尝试使用此代码在视频播放时等待,直到表单可见WebDriverWait(driver,1000).until(EC.presence_of_element_located((B......
  • (三)Python基本数据类型
    Python的基本数据类型包括整数类型、浮点数类型和复数类型。下面分别介绍这些数据类型以及数值运算操作符和数值运算函数。整数类型(int):整数类型表示没有小数部分的数字,可以是正数、负数或零。例如:a=5b=-3c=02.浮点数类型(float):浮点数类型表示有小数部分的数字,可以......
  • 运算符
    运算符:i++/++ii++(后缀递增):这种形式称为后缀递增,它首先返回i的原始值,然后i的值增加1。当i++表达式作为独立语句使用时,它只改变i的值,不返回任何值。++i(前缀递增):这种形式称为前缀递增,它首先将i的值增加1,然后返回i的新值。当++i表达式作为独立语句使用时......