首页 > 其他分享 >嵌入式学习第三天:转义字符、算术运算、类型转换...

嵌入式学习第三天:转义字符、算术运算、类型转换...

时间:2024-07-25 21:00:21浏览次数:13  
标签:类型转换 优先级 运算 嵌入式 运算符 转义字符 类型 表达式 赋值

目录

转义字符

运算符

优先级 和 结合性

+加法运算符 -减法运算符 

* 乘法运算符 /除法运算符  %求余运算符 

/的注意要点: 

%的注意要点:

--自减运算符

++自增运算符

&取地址运算符 

,逗号运算符 

=赋值运算符

不同类型的数据间混合赋值总结

高精度——>低精度

长类型——>短类型

短类型——>长类型

表达式

隐式类型转换

强制类型转换


转义字符

是以一个字符 "\"开头的字符序列

注意:区别普通字符和转义字符——例子:'n'表示字符n,'\n'转义字符,表示换行。

运算符

优先级 和 结合性

优先级高,并不一定先运算,但是一定是先结合。

不同优先级的运算混合,高优先级的先结合。

同一优先级的运算混合,按照结合性结合。

运算的对象的个数:单目、双目、三目

+加法运算符 -减法运算符 

两目运算符、优先级为4、结合方向自左至右 

* 乘法运算符 /除法运算符  %求余运算符 

两目运算符、优先级为3、结合方向自左至右

/的注意要点: 

        如果是两个整型数相除,此时相当于是整除的效果 
        除法运算中 除数不能为 0

%的注意要点:

        除数不能为0
        求余运算,运算数不能是小数。必须是整数
        结果的符号 ,取决于 左操作数 的符号

%求余的应用:判断奇数偶数

number % 2 = 1——奇数    number % 2 = 0——偶数

此外,number%n的取值范围为0〜n-1

--自减运算符

表示一次-1 单目运算符、优先级2、结合方向自右至左

++自增运算符

表示一次+1 单目运算符、优先级2、结合方向自右至左

例子:

int a = 1;

++a;后置加加——先用(表达式的结果)后加(让i自增)

--a;前置加加——先加(让i自增)后加(表达式的结果)

注意:a++;和++a;

        如果单独使用,效果一致

        参与到别的运算中才发挥作用

        ++a的效率可能更高,因为不需要开辟空间创建临时变量

        运算数a必须是一个可修改变量(10++这样的写法就是错误的)

error: lvalue required as increment operand

这个错误涉及到左值和右值的知识:

        int a;
       a = 10; (正确) //能放在= 左边的 值 左值 (eg: 变量)
       10 = a;(错误) //只能放在 = 右边的 右值 (eg: 常量)

注意++和--的使用

&取地址运算符 

单目运算符、优先级2、结合方向自右至左

获取变量对应内存空间的首地址(地址编号)

&a;(正确)左值可定位(eg: 变量)

&10;(错误)右值不可定位(eg: 常量、表达式)

,逗号运算符 

优先级最低、结合方向自左至右 

语法:表达式1,表达式2,表达式3,...,表达式n

逗号运算表达式的结果是式子中最后一个表达式运算的结果

=赋值运算符

赋值符号"="就是赋值运算符,它的作用是将一个数据赋给一个变量

int a;
a = 10; 赋值运算 
        赋值表达式:结果 就是a的值 、类型 就是a的类型 
a=(b=(c=10))  可以连续赋值 
+=  赋值运算 a += 1 // a = (a + 1)
a -= 1 // a = a - 1
赋值运算符还有+= 、-= 、*= 、/=....

不同类型的数据间混合赋值总结

高精度——>低精度

精度丢失:当将高精度类型的数据赋值给低精度类型时,由于低精度类型无法存储高精度类型的全部信息,可能会导致数值精度的丢失。

例如,将 double 类型的数据赋值给 float 类型时,可能会丢失一些小数部分的精度。

长类型——>短类型

高位截断:当将长类型的数据赋值给短类型时,超过短类型范围的高位部分将被截断。这意味着可能会丢失高位信息,导致数据变化。

例如,将 int 类型的数据赋值给 short 类型时,超过 short 范围的高位部分将被截断。

短类型——>长类型

1.无符号短类型(高位补0):无符号类型在扩展为更长的类型时,高位将自动填充 0。

例如,将 unsigned char 类型的数据赋值给 unsigned int 类型时,高位将被填充为 0。

2.有符号短类型(符号位扩展:高位补符号位):有符号类型在扩展为更长的类型时,将使用符号位进行扩展,也就是高位将被填充为符号位的值。如果符号位是 0(正数),则高位补 0;如果符号位是 1(负数),则高位补 1。

例如,将 char 类型的数据赋值给 int 类型时,如果 char 是负数,int 的高位将被填充为 1。

表达式

运算符和运算数构成的字符序列

注意:

        表达式都是有值的、有类型的

隐式类型转换

从右向左  :必转。
从下向上  :低精度和高精度混合运算时,低精度往高精度转。

强制类型转换

格式:(类型)运算数;

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

标签:类型转换,优先级,运算,嵌入式,运算符,转义字符,类型,表达式,赋值
From: https://blog.csdn.net/weixin_62409078/article/details/140688167

相关文章

  • 嵌入式学习第9天——C语言运算符,程序设计结构,输入输出缓冲机制
    2024.7.25第九天笔记关于++混合操作,不同计算结果推理第一种编译结果:inti=5;intsum=(++i)+(++i)=6+7=13第二种编译结果:inti=5;intsum=(++i)+(++i)=6+7=7+7前面的7是因为后面i的变化被影响后,重新赋值=14第一种编译结果:inti=5;in......
  • 【嵌入式开发之标准I/O】流的刷新、定位以及格式化输出、输入
    流的刷新intfflush(FILE*fp);成功时返回0;出错时返回EOF。将流缓冲区中的数据写入实际的文件。Linux下只能刷新输出缓冲区,输入缓冲区丢弃。如果输出到屏幕使用fflush(stdout)。流的定位流的定位:ftell()函数 longftell(FILE*stream);ftell() 函数的作用是......
  • 【嵌入式开发之标准I/O】二进制文件的读写及实验
    文本文件和二进制的区别文本文件和二进制文件的区别主要在于它们的编码方式和数据组织方式。‌编码方式:‌文本文件是基于字符编码的文件,‌常见的编码有ASCII编码、‌UNICODE编码等。‌这些编码将字符映射到特定的二进制值,‌使得字符可以在计算机中存储和传输。‌相比之下,‌......
  • 嵌入式学习--DAY10:函数的调用
    一、函数参数和函数的值1.在定义函数中指定的形参,在未出现函数调用时,它们并不占用内存中的存储单元,只有在发生函数调用时,函数中的形参才会被分配内存单元。在调用结束后,形参所占的内存单元也会被释放。2.实参可以是常量、变量或表达式。在被定义的函数中,必须指定形参的类型,实......
  • 嵌入式工控机和4U工控机的区别
    在现代工业自动化和智能控制领域,工控机(工业计算机)作为关键的硬件支撑,扮演着至关重要的角色。随着技术的进步和市场需求的多样化,工控机的种类和形态不断丰富。其中,嵌入式工控机与4U工控机是两种常见的工业计算机类型。它们在结构、功能、应用场合等方面存在显著的区别。本文将详细......
  • C++中的四种类型转换(静态、动态、常量、重新解释。
    在C++中,类型转换是编程语言中的一个重要概念,它允许我们将一种数据类型的值转换为另一种数据类型。C++提供了四种主要的类型转换方式:静态类型转换(StaticCast)、动态类型转换(DynamicCast)、常量类型转换(ConstCast)和重新解释类型转换(ReinterpretCast)。每种转换都有其特定的用途......
  • 嵌入式工控机的优势与示例
    嵌入式工控机是一种专用计算系统,旨在在较大的系统或设备中执行特定任务或功能。与通用计算机不同,嵌入式工控机通常集成到日常物品、机械或设备中,例如汽车、电器、医疗设备和工业机器。这些计算机针对效率和可靠性进行了优化,并且通常具有固定用途,运行专用软件来控制和监控设备的操......
  • 《安富莱嵌入式周报》第340期:开源便携RF信号发生器,六自由度3D鼠标,开源USB PD Sniffer,C
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 视频版:https://www.bilibili.com/video/BV18w4m1k7NF/目录1、开源便携RF信号发生器,支持12.5MHz-6.4GHz2、关于ThreadX被移交Eclipse后,使用FileX的exFAT功能版权问题3、......
  • MOTOROLAVME172PA-652SE 嵌入式控制器
    高性能控制:MOTOROLAVME172PA-652SE模块具有高性能的控制能力,可以用于实现复杂的工业自动化系统的控制和监测。多功能模块:该模块可能具备多种功能,如输入/输出控制、数据采集、信号处理等,可适应不同的应用需求。可编程性:MOTOROLAVME172PA-652SE模块通常支持编程和定制化,使......
  • 【UDS诊断协议:ISO-14229中文】【嵌入式车载测试收徒】
    每日直播时间:(直播方式:腾讯会议)周一到周五:20:00-23:00周六与周日:9:00-17:00                 进腾讯会议学习的,可以关注我并后台留言直播内容:(车厂真实项目实操测试)HIL(硬件在环)测试、UDS功能诊断、UDS自动化诊断、数据库制作、DTC故障制造、CAN......