2024年7月17日嵌入式学习

在今日的学习中,学习变量赋初值,算数运算符以及各类数据的混合运算,还有不同类型的变量间的混合赋值

变量赋初值

在进行变量的定义时 可以进行初始化,在为变量在内存中开辟新空间后附上数值。

与定义完在进行赋值的操作不同的是可以减少运行时间,定义时不进行初始化是在内存开辟空间后赋给随机值,随后在进行赋值,相比之下,初始化则能更加高效。

运算符与结合性

在c语言中算数运算符有优先级

在优先级1中,我们经常用到(),这和我们学的数学是一样的

接下来优先级2的是单目运算符

着重学到的是++自加运算符与(类型)类型转换运算符

在自加运算符中,例如++i,先做自加,在进行赋值,i++则相反,先进行赋值,在进行自加,

同时在这之中我们了解到了什么是左值什么是右值。

在c语言中,常量一般是右值,左值一般是变量。在这我们了解到const这个用法,在定义变量前加入,让这个变量成为只读变量,所以这个变量只能读,不能改,这个时候则是右值。

在优先级3~12则为双目运算符

在这之中首先学习了基础+ - * /的用法。

各类型数据的混和运算

在今天学习的重点是各种类型数据的混合运算,

例如:用一个int型加一个float型,会得到什么。

这是一张混合运算的隐式转换。

在低优先级碰到高优先级的类型时,系统会自己将低优先级的转化为高优先级的类型在得出答案

在这之中我们也了解到什么叫临时变量(匿名变量)例如打印一个i++,我们知道要首先进行赋值,在进行自加,那么在一个式子的运行过程中,不会出现这条式子赋值完了在退回去进行自加,这时,就会有临时变量的出现,先将i的值拷贝到这个临时变量中进行输出,i则进行自加。这就是临时变量。

有隐式转换就有显示转换

(类型)类型转换运算符,例如:

double a = 10;

int b = 5;

printf("%d\n",(int)a + b)

在这个式子中就将a转化为int型了。

但是在这个过程中会出现数据丢失,例如将浮点数转换为整型,那么将不会出现小数。这时就出现了数据丢失。

混合赋值

在我们进行代码的编写时,我们经常会遇到一些问题,比如将一个整型的变量赋值给了一个浮点数的变量,这或许不会出现问题,若是将一个float的变量赋值给一个int型的变量呢,这就会出现一个现象就是小数部分截断。

在进行赋值时,浮点数的格式时符号位加阶码加尾数,但是整型只有符号位,数值,所以c就直接将浮点数的整数部分拉出来赋值到int类型的变量里

同样有个问题,如果将一个int的变量的值赋给一个short的变量里,会出现高位截断,例如在内存中存储的int型数据aaaabbbb,将他赋值到short中则会只剩下bbbb。这就是高位截断。反过来就是将short的值赋给int的地位

同时也会出现一个问题。将一个值为-1的short型向一个整型扩展,则,整数部分就老老实实拷贝,高位部分的值则取决于他的符号位,如果时负数,则都为1,如果为正则都为0.若是无符号数,同样都是0.

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值