5 类型修饰符&基本运算符

 欢迎来到@一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力

对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:3329759426@qq.com 。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

    专栏:

文章概述:对 类型修饰符&基本运算符的介绍

关键词:类型修饰符&基本运算符

本文目录

类型修饰符

存储修饰符

内存的类型

优美的栈

基本运算符

目的概念

算数运算符

关系运算符

其它

类型修饰符

  • 对大类型进行细化, short long signed unsigned
  • const 常量,
  • volatile 不要进行自动优化

存储修饰符

  • auto 默认的类型,称为:自动变量、栈变量、局部变量 c++17 已经把 auto 挪为他用,不再是类型修饰符
  • register 直接放寄存器中,速度快。c++17 开始废弃

  • static 修饰,静态空间,与全局变量同在
  • extern 跨文件的伪声明

并不分配内存,只是告诉编译器,全局变量会在另一个地方声明

内存的类型

程序分配的内存,主要在“栈”和“堆”这两部分。“堆”比“栈”复杂

  • 只读代码: 存代码,也包括立即数,以及定常资源
  • 静态空间: 存放static变量,全局变量,常量
  • 栈区(stack): 自动变量,函数执行时的上下文环境
  • 堆(heap): 程序运行中,动态地申请及归还

  • 堆和栈的比较

比较项目

说明

谁来管理

自动申请,自动释放

程序员代码申请,代码释放

时间特性

后申请的,必然先释放

没有限制

空间特性

所有申请的空间都是连续在一起的

空间上没有规律

可能产生能“碎片”

大小限制

有大小限制,默认2M

大小理论上没有限制

响应速度

很快

较栈慢

常见错误

栈溢出

悬挂指针,内存泄漏

栈的大小可设置

优美的栈

后进先出的结构(LIFO)

对比:heap 是什么结构? 自由进出

  • 栈能实现沿着原路返回的功能 想一想: 很多人爬山,山脚下堆放衣服,回来拿衣服的时,怎样不会纠缠在一起??
  • 特点是:自动分配,自动释放
  • 缺点: 栈溢出 stackoverflow

基本运算符

a+b, *p = x->f() * 12;

本质上说,运算符就是一种函数,只是表现形式更加人性化

目的概念

目就是参加运算操作数的个数

  • 主要有单目,双目,三目(只有一个运算符)
  • 同一运算符也可以有多目 a-b 和 -a 称为运算符的重载形式
  • 运算符有优先级和结合律

优先级

运算符

结合性

算数运算符

  • 整除,求余 试一试: 如何让 a 不断重复 0 1 2 0 1 2 ...

思考题:a, b 是两个月份值,求 a 月 到 b 月,距离多少个月?

  • 浮点运算有舍入误差
  • 字符型可以参与整数的运算 试一试: 把小写字母转为大写字母

关系运算符

大于,小于,等于,不等于 。。。

不同类型的数比较---陷阱! 浮点数精确比较---陷阱!

逻辑运算符

表示:与 或 非 的概念 && || !

  • 注意优先级: !a&&b的意思是:(!a) && b,而不是: !(a&&b) a || b && c 的意思是: a || (b && c), 而不是:(a||b) && c
  • 逻辑运算符有短路求值特性,当心!

其它

  • 赋值=本身是个运算符,结合律:右结合 所以才有:a = b = c; 意思是: a = (b = c)
  • ( ) 是运算符,它的意思是强制转换,有可能丢失精度 如何取:天花板?地板? 3.5 -> 3 3.5 -> 4 如何四舍五入?
  • 还有很多高级的运算符,后续用到再讲
  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值