7.17学习感悟

回顾:以int为例  有符号型 -2^31---+2^31-1
                            无符号    0---+2^32-1
为什么阶码要加127:(1)避免阶数为负
                                (2)2^7-1(例如:1.34),与小数点前的数有关

初始化  int  i  = 10;与赋值int  i;  i= 10;
运算符(operator)优先级:操作数(operand)  
C语言中所有运算符都有对应的数据类型。 
编译器只做类型检查(gcc),只检查数据类型不检查具体的数。
求余运算符,要求两边必须是整型或者与整型相兼容
求余运算符最终的结果的符号只与左操作数有关
求余运算符除不尽时;所取值为0---右操作数-1
随机数(random)
void形参random实参

编译时改变的是临时变量  匿名变量
自增运算符i++,与++i 的区别
(1)i++会引入一个临时变量,++i直接运算
(2)++i效率更高
左值 left value  只能放在赋值运算符左边的值
右值 right value  一般是常量,只能放在赋值运算符的右边,临时变量都是右值(不能被赋值)

?    ++i++运算为什么出错()   ?

(1)++运算符是从右到左计算的 ,可以理解为++i---++.

  (2)  ++i为右值即为rvalue,不能再赋值给++,故运行会报错。

判断左右值的方法
(1)能够被定位的(ip  &)都是左值,不能被定位的是右值
  (2)  所有的临时变量都是右值
(引入一个“只读变量”为左值(lvalue))
  const关键字  作用将变量设置为只读变量,限制变量被编译过程中被更改


复合数据计算
隐式转换   不同数据类型之间 低级数据会向高级数据转化
显式转换    类型转换运算符()将一个数据临时转换为所需的数据类型(注意:可能导致某些数据的丢失)


混合赋值(有符号位看符号位补,无符号位统一补0)

低级不能向高级赋值

高位向低位赋值(高位截断) short = int

低位数据向高位数据补时(短数据向高数据补时,剩余位数当短数据为正时补0,为负时取1);补码转原码-1取反,原码转补码取反再+1。

当int 向 unsigned 赋值时由于两个都是4字节,但是int表示整型参数有符号,unsigned表示整型参数无符号当二者相赋值时,%d表示有符号,%u表示无符号

    

无符号计算:FF FF FF FF(识别为原码) =2^32-1= 4294967295 

     

有符号计算为:FF FF FF FF (识别为补码) 故计算为 补码-1再取反得原码00 00 00 01,又因为补码确定了数的符号1为负,故得-1.
函数传参

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值