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

C++初学(3)

面向对象编程(OOP)的本质是设计并拓展自己的数据类型,设计自己的数据类型就是让类型与数据匹配。内置的C++类型分为两组:基本类型和复合类型。这里我们将介绍基本类型的整数和浮点数

3.1、简单变量

3.1.1、变量名

C++必须遵循几种简单的C++命名规则:

(1).在名称中只能使用字母字符、数字和下划线(_)。

(2)名称的第一个字符不能是数字。

(3)区分大小写字符。

(4)不能将C++关键字用作名称。

(5)以两个下划线大头或以下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符。

(6)C++对于名称的长度没有限制,名称中所有字符都有意义,但有些平台有长度限制。

如果想用两个或多个单词组成一个名称,通常的做法是用下划线字符将单词分开,如my_yuanshi;或者第二个单词开始将每个单词的第一个字母大写,如myAccountNumber。

3.1.2、整型

整数就是没有小数部分的数字。整数有很多,目前不可能用有限的计算机内存来表示所有整数。因此语言只能表示所有整数的一个子集。而C++则提供好几种,便能根据实际要求选择最合适的整数。

不同C++整型使用不同的内存量来存储整数。使用的内存量越大,可以表示的整数值范围也越大。有的类型(符号类型)可表示正值和负值,而有的类型(无符号类型)不能表示负值。C++的基本整型分别是char、short、int、long、和long long。(按照存储整数时使用的内存量进行递增排序)。

3.1.3、整型short、int、long和long long

下面介绍一下位与字节(重要!)

计算机内存的基本单元是位(bit)。可以将bit看作电子开关,可以开,可以关。关表示值为0,开表示值为1。因为每一位都可以有两种设置,所以8位的总组合为2^8,即256。

字节(byte)通常指的是8位的内存单元,它指的是描述计算机内存量的度量单位,1KB等于1024字节,1MB等于1024KB。

C++提供了一种灵活的标准,它确保了最小长度,如下所示:

(1)short至少16位。

(2)int 至少与short一样长。

(3)long至少32位,且至少与int一样长。

(4)long long至少64位,且至少与long一样长。

这4种类型都是符号类型,负值和正值几乎相同。例如16位的int取值范围为-32768~+32767。要想知道系统中整数的最大长度,可以在程序钟使用C++工具来检查类型的长度。sizeof运算符返回类型或变量的长度,单位为字节(运算符是内置的语言元素,对一个或多个数据进行运算,并生成一个值)。

头文件climits中包含了整型限制的信息。如下代码进行演示:

#include <iostream>
#include <climits>
int main()
{using namespace std;int n_int = INT_MAX;short n_short = SHRT_MAX;long n_long = LONG_MAX;long long n_llong = LLONG_MAX;cout << "int is " << sizeof(int) <<" bytes." << endl;cout << "short is " << sizeof n_short << " bytes." << endl;cout << "long is " << sizeof n_long << " bytes." << endl;cout << "long long is " << sizeof n_llong << " bytes." << endl;cout <<  endl;cout << "Maximum values:" << endl;cout << "int:" << n_int << endl;cout << "short:" << n_short << endl;cout << "long:" << n_long<< endl;cout << "long long:" << n_llong << endl<<endl;cout << "Minimum int value =" << INT_MIN << endl;cout << "Bits per type=" << CHAR_BIT << endl;return 0;
}

3.1.3.1、运算符sizeof和头文件limits

sizeof运算符指出,int的长度为4个字节。可对类型名或变量名使用sizeof运算符。

头文件climits定义了符号常量来表示类型的限制。可以到这里看详细的定义:climts中的符号常量

climits文件中包含与下面相似的语句行:

#define INT_MAX 32767

#define和#include一样,也是一个预处理器编译指令。该编译指令告诉预处理器:在程序中寻找INT_MAX,并将所有INT_MAX都替换为32767。预处理器寻找独立的标记,并不会将单词里含有INT_MAX给替换。所以#define可以用来定义自己的符号常量。C++有一种更好的创建符号常量的方法(使用关键字const,在后面进行讨论)。

3.1.3.2、初始化

初始化将赋值与声明合并在一起。例如下面,将int的最大取值赋值给n_int。

int n_int=INT_MAX;

也可以使用字面值常量来初始化,或者用已定义过的变量来初始化,甚至可以使用表达式来初始化。

注:如果不对函数内部定义的变量进行初始化,该变量的值将是不确定的。

3.1.3.3、C++11初始化方式

用大括号初始化器用于单值变量。用这个方法可以省略等号,并且大括号内不用包含东西(默认初始化为0)。

int yuanshi={1600};
int yuanshi{7};
int mola{};

3.1.4、无符号类型

如果short表示的范围为-32768~+32767,则无符号版本的表示范围为0~65536。当且仅当数值不为负才应使用。要创建无符号版本的基本类型,只需要使用关键字unsigned来修饰声明即可。

#include <iostream>
#define ZERO 0
#include <climits>
int main()
{using namespace std;short sam = SHRT_MAX;unsigned short sue = sam;cout << "Sam has " << sam << " dollars and Sue has " << sue;cout << " dollars deposited." << endl<< "Add $1 to each account." << endl << "Now";sam += 1;sue += 1;cout << "Sam has " << sam << " dollars and Sue has " << sue;cout << " dollars deposited.\nPoor Sam!" << endl;sam = ZERO;sue = ZERO;cout << "Sam has " << sam << " doolars and Sue has " << sue;cout << " doolars deposited." << endl;cout << "Take $1 from each account." << endl << "Now ";sam += 1;sue -= 1;cout << "Sam has " << sam << " dollars and Sue has " << sue;cout << " dollars deposited." << endl << "Lucky Sue!" << endl;return 0;
}

这些整型变量的行为就像里程表。如果超越了限制,其值将为范围另一端的取值。

3.1.5、选择整型类型

(1)一般没有特殊要求选择int。

(2)如果变量的值不为负,选择unsigned。

(3)如果知道变量可能表示的整数值大于16位整数的最大可能值,则使用long;如果超过20亿,则采用long long。

(4)需要节省空间,且通常仅当有大型整型数组时用short。

3.1.6、整型字面值

整型字面值(常量)是显示地书写的常量。C++使用前一(两)位来标识数字常量的基数。

(1)第一位为1~9,则为十进制。

(2)第一位是0,且第二位1~7,则为八进制。

(3)如果前两位是0x或0X,则为十六进制。

注:默认情况下,cout以十进制格式表示整数。可以用下面代码转化cout显示方式。

cout<<dec;//十进制
cout<<hex;//十六进制
cout<<oct;//八进制

3.1.7、char类型:字符和小整数

char类型是专为存储字符而设计的。常用ASCLL码表。

#include <iostream>
int main()
{using namespace std;char ch = 'M';int i = ch;cout << "The ASCLL code for " << ch << " is " << i <<endl;cout << "Add one to the character code:" << endl;ch += 1;i = ch;cout << "The ASCLL code for " << ch << " is " << i << endl;cout << "Display char ch using cout.put(ch):";cout.put(ch);cout << endl << "Done!" << endl;return 0;
}

3.1.7.1、程序说明

ch为字符“M”,而i为“M”的ASCLL码值“77”。ch加一改变其ASCLL值,表示为“N”。

3.1.7.2、成员函数cout.put()

函数cout.put()是一个重要的C++OOP概念——成员函数——的第一个例子。成员函数归类所有,描述了操纵类的特定对象(例如这里的cout对象)来使用成员函数。必须用句点将对象名和函数名称(put())连接起来。句点称为成员运算符。它提供了另一种显示字符的方法,可以替代<<运算符。

3.1.7.3、signed char 和unsigned char

char在默认的情况下既不是没有符号,也不是有符号。是否有符号由C++决定。unsigned char类型的表示范围通常为0~255,而signed char的表示范围为-128~+127。

3.1.7.4、wchar_t

需要处理的字符集可能无法用一个8位字节表示,可以将char定义为一个16位的字节或更大的字节。iostream文件的wcin和wcout可用于处理wchar_t流。

3.1.8、bool类型

布尔变量可以是ture或false。C++将非零值解释为true,将零值解释为false。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JAVA同城拼桌活动报名系统支持H5小程序APP公众号源码
  • Android Studio Build窗口出现中文乱码问题
  • 得到xml所有label 名字和数量 get_xml_lab.py,get_json_lab.py
  • vue3-01创建项目
  • 聊聊在springcloud gateway如何获取请求体
  • 如何优化PyTorch以加快模型训练速度?
  • Linux基础复习(二)
  • AI大模型评测方法总结!
  • 学习008-02-04-03 Group List View Data(组列表查看数据)
  • 【基础模型】开始构建我们自己的大语言模型2:模型构建部分
  • ElementUI,el-input输入框max、min限制最大最小值失效
  • cdga|数据资产运营:加速企业数据价值释放的新引擎
  • 【MySQL】访问mysqld的方式{命令行客户端/vscode-c-api客户端/图形化界面:mysql/navicat}
  • lucene中nvd和nvm索引文件作用以及规范化值是如何影响文档评分
  • uniapp map组件自定义markers标记点
  • [deviceone开发]-do_Webview的基本示例
  • [笔记] php常见简单功能及函数
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【个人向】《HTTP图解》阅后小结
  • 2017届校招提前批面试回顾
  • Android系统模拟器绘制实现概述
  • golang 发送GET和POST示例
  • HashMap ConcurrentHashMap
  • Java方法详解
  • JS+CSS实现数字滚动
  • Linux CTF 逆向入门
  • nodejs调试方法
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • SQLServer之创建显式事务
  • vuex 笔记整理
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 关于extract.autodesk.io的一些说明
  • 好的网址,关于.net 4.0 ,vs 2010
  • 记一次删除Git记录中的大文件的过程
  • 再次简单明了总结flex布局,一看就懂...
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • Java总结 - String - 这篇请使劲喷我
  • 回归生活:清理微信公众号
  • # wps必须要登录激活才能使用吗?
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (003)SlickEdit Unity的补全
  • (2)空速传感器
  • (4)STL算法之比较
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (十三)Flask之特殊装饰器详解
  • (一)Linux+Windows下安装ffmpeg
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)创业家杂志:UCWEB天使第一步
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)