当前位置: 首页 > news >正文

学习C++第二课

这是学习C++的第二节课,老师讲的好快,再总结一遍吧


一、C++的数据类型和表达式

1.1C++的数据类型
  • C++中数据类型包括基本类型、构造类型、指针类型、引用类型和空类型(void)
  • 布尔型就是逻辑型,空类型就是无值型

这里详细介绍基本类型和构造类型

基本类型包括
整形短整型(short int)、整形(int)、长整形(long int)
字符型字符型(char)
浮点型单精度(float)、双精度(double)、长双精度(long double)
构造类型包括
布尔型布尔型(bool)
枚举类型枚举类型(enum)
数组类型\
结构体类型结构体类型(struct)
共用体类型共用体类型(union)
类类型类类型(class)
  • C++的数据包括常量变量,常量和变量都具有类型。由以上这些数据类型还可以构成更复杂的数据结构
  • C++并没有统一各类数据的精度、数值范围和在内存中所占的字节数,各C++编译系统根据自己的情况做出安排
  • 在整形符号int和字符型符号char的前面,可以加修饰符signed(表示:有符号)或者unsigned(表示:无符号)。如果指定为signed,则数值以补码形式存放,储存单元中的最高位(bit)用来表示数值的符号。如果指定为unsigned,则数值没有符号,全部二进制位都用来表示数值本身。
1.2常量

什么是常量

常量的值是不能改变的,一般从其字面形式即可以判别是否为常量。常量包括两大类,即数值型常量(即常数)和字符型常量

1.2.1 数值常量

数值常量就是通常说的常数。在C++中,数值常量是区分类型的,从字面形式即可识别器类型。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.2.2 字符常量

用单撇号括起来的一个字符就是字符型常量,在内存中占一个字节

  • ①字符常量只能包括一个字符,‘AN’是不合法的
  • ② 字符常量区分大小写字母
  • 撇号(')是定界符,而不属于字符常量的一部分
1.2.3 转义字符常量

除了以上形式的字符常量外,C++还允许用一种特殊形式的字符常量,就是以“\”开头的字符序列。

在这里插入图片描述

1.2.4 字符串常量

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2.5 符号常量

为了编程和阅读的方便,在C++程序设计中,常用一个符号名代表一个常量,称为符号常量,即以标识符形式出现的常量。

1.3变量

在程序运行期间其值可以改变的量称为变量,一个变量应该有一个名字,必能在内存中占据一定的储存空间,在该存储单元中存放变量的值。
用来标识变量、符号常量、函数、数组、类型等实体名字的有效字符序列称为标识符(identifier)。

  • C++规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。
  • 在定义变量时,如果加上关键字const,则变量的值在程序运行期间不能改变,这种变量称为常变量(constant variable)。
  • 在定义常变量时必须同时对它初始化(即指定其值),此后它的值不能再改变。常变量不能出现在赋值号的左边。
  • const int a a= 3;(正确)
  • const int a;
    a = 3;(错误)
1.4C++的运算符
运算符类型表达式
算术运算符+(加)-(减) *(乘) /(除) %(整除求余)++(自加) --(自减)
关系运算符>(大于)<(小于) ==(等于)>=(大于或等于)<=(小于或等于)!=(不等于)
逻辑运算符&&(逻辑与)
位运算符<<(按位左移) >>(按位右移) &(按位与)
赋值运算符=及其扩展赋值运算符
条件运算符? :
逗号运算符
1.5算术运算符与算术表达式
1.5.1 基本的算术运算符
  • +(加法运算符,或正值运算符。如3+5,+3)
  • -(减法运算符,或负值运算符。如5-2,-3)
    • (乘法运算符。如3*5)
  • /(除法运算符。如5/3)
  • %(模运算符,或称求余运算符,%两侧均应为整型数据,如7%4的值为3)。
    多数编译系统采取“向零取整”的方法
  • 如果参加+, -, *, / 运算的两个数中有一个数为float型数据,则运算的结果是double型,因为C++在运算时对所有float型数据都按double型数据处理。
1.5.2 算术表达式和运算符的优先级与结合性
  • C++规定了各种运算符的结合方向(结合性),算术运算符的结合方向为“自左至右”。
1.5.3 表达式中各类数值型数据间的混合运算
  • 在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。
1.5.4 自增和自减运算符
  • (1) 自增运算符(++)和自减运算符(–)只能用于变量,而不能用于常量或表达式。
  • (2) ++和–的结合方向是“自右至左”,见附录B。
  • (3) 自增运算符(++)和自减运算符(–)使用十分灵活,但在很多情况下可能出现歧义性,产生“意想不到”的副作用。
  • (4) 自增(减)运算符在C++程序中是经常见到的,常用于循环语句中,使循环变量自动加1。也用于指针变量,使指针指向下一个地址。
1.5.5 强制类型转换运算符
  • 在表达式中不同类型的数据会自动地转换类型,以进行运算。有时程序编制者还可以利用强制类型转换运算符将一个表达式转换成所需类型。
1.6赋值运算符与赋值表达式
1.6.1 赋值运算符
  • 赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量。如“a=3”的作用是执行一次赋值操作(或称赋值运算)。把常量3赋给变量a。也可以将一个表达式的值赋给一个变量。
1.6.2 赋值过程中的类型转换

如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时会自动进行类型转换。

  • (1) 将浮点型数据(包括单、双精度)赋给整型变量时,舍弃其小数部分。
  • (2) 将整型数据赋给浮点型变量时,数值不变,但以指数形式存储到变量中。
  • (3) 将一个double型数据赋给float变量时,要注意数值范围不能溢出。
  • (4) 字符型数据赋给整型变量,将字符的ASCII码赋给整型变量。
  • (5) 将一个int、short或long型数据赋给一个char型变量,只将其低8位原封不动地送到char型变量(发生截断)。
  • (6) 将signed(有符号)型数据赋给长度相同的unsigned(无符号)型变量,将存储单元内容原样照搬(连原有的符号位也作为数值一起传送)。
1.6.3 复合的赋值运算符

在赋值符“=”之前加上其他运算符,可以构成复合的运算符。

  • +=、-=、*=…
1.6.4 赋值表达式

由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。

  • <变量> <赋值运算符> <表达式>
    并不是任何对象都可以作为左值的,变量可以作为左值,而表达式a+b就不能作为左值,常变量也不能作为左值,因为常变量不能被赋值。
1.7逗号运算符与逗号表达式

C++提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如
3+5,6+8
称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为
表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。

  • 赋值运算符的优先级别高于逗号运算符

相关文章:

  • Java连接池详解
  • 面向对象编程——类与对象(C#)(未写完)
  • 军品研制过程参考标准
  • 开学季,学长带你认识新生活
  • R语言data.table导入数据实战:data.table数据列索引
  • Java 基础三:使用Velocity模板生成 xml
  • 《华为数据之道》总结(上篇)
  • 【牛客 - 剑指offer / 快速幂】JZ16 数值的整数次方 两种方案(直接运算、快速幂) Java实现
  • SAP云集成 SAP Integration Suite启用过程,踩坑记
  • 【图像压缩】基于余弦变换及霍夫曼编码实现jpeg压缩和解压附matlab代码
  • MySQL开发技巧——行列转换
  • leetcode-剑指 Offer II 001. 整数除法
  • gitpod,不用clone代码就可以让项目在线上跑起来
  • 用Python制作我的核酸检测日历
  • Windows超级管理器
  • 《Java编程思想》读书笔记-对象导论
  • 【React系列】如何构建React应用程序
  • CSS居中完全指南——构建CSS居中决策树
  • Elasticsearch 参考指南(升级前重新索引)
  • Java比较器对数组,集合排序
  • Java应用性能调优
  • js写一个简单的选项卡
  • magento2项目上线注意事项
  • maven工程打包jar以及java jar命令的classpath使用
  • PV统计优化设计
  • Spring Cloud中负载均衡器概览
  • tweak 支持第三方库
  • Vue 重置组件到初始状态
  • vue学习系列(二)vue-cli
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 对象管理器(defineProperty)学习笔记
  • 猴子数据域名防封接口降低小说被封的风险
  • 计算机常识 - 收藏集 - 掘金
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 原生js练习题---第五课
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 阿里云服务器如何修改远程端口?
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​MySQL主从复制一致性检测
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (2)STL算法之元素计数
  • (vue)页面文件上传获取:action地址
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (原創) 未来三学期想要修的课 (日記)
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • @EnableWebMvc介绍和使用详细demo
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [ 蓝桥杯Web真题 ]-布局切换
  • [<死锁专题>]
  • [Android Studio] 开发Java 程序
  • [Android] Upload package to device fails #2720
  • [Asp.net MVC]Asp.net MVC5系列——Razor语法