C++初学(3)

news2024/11/16 8:51:16

面向对象编程(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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1956470.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

理解常见开源协议的区别

本文将介绍几种常见的开源许可证&#xff0c;包括GPL、LGPL、MIT、Apache、BSD 和 木兰协议&#xff08;Mulan PSL&#xff09;&#xff0c;并详细解释它们的区别。 1. GPL (GNU General Public License) GPL 是最著名和最常用的开源许可证之一&#xff0c;由自由软件基金会 …

【前端 17】使用Axios发送异步请求

Axios 简介与使用&#xff1a;简化 HTTP 请求 在现代 web 开发中&#xff0c;发送 HTTP 请求是一项常见且核心的任务。Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;适用于 node.js 和浏览器&#xff0c;它提供了一种简单的方法来发送各种 HTTP 请求。本文将介绍 Axio…

如何在 Excel 中恢复临时文件

如果您在退出 Microsoft Excel 之前忘记保存重要的工作簿&#xff0c;这会令人烦恼和头疼。此外&#xff0c;在某些意外情况下&#xff0c;包括计算机突然崩溃、软件本身崩溃等&#xff0c;您精心制作的工作簿可能会消失。但是&#xff0c;您仍然可以使用Excel 临时服务恢复 Ex…

中山大学与Pixocial联手提出CatVTON:轻量化架构与高效训练,助力虚拟试衣技术落地应用!

近日&#xff0c;中山大学和 Pixocial 联合发布了 CatVTON&#xff0c;提出更加轻量化的架构与参数高效训练策略&#xff0c;助力图像虚拟试衣技术向落地应用迈进&#xff01; 项目已公开论文并开源权重和代码&#xff0c;更有在线 Demo 可以试玩&#xff01; 给钢铁侠穿上奇异…

Qt Creator初识

目录 一、认识 Qt Creator 1.Qt Creator 概览 2.使用 Qt Creator 新建项目 2.1 新建项目 2.2 选择项目模板 2.3 选择项目路径 2.4 选择构建系统 2.5 填写类信息设置界面 2.6 选择语言和翻译文件 2.7 选择 Qt 套件 2.8 选择版本控制系统 2.9 最终效果 3.认识 Qt Cre…

【详细】Ubuntu下安装qt5

Ubuntu下安装qt5 一. QT安装环境准备1、判断gcc是否安装2、安装g3、安装clang编译器4、安装 clang 5、安装make6、安装make-guile7、安装cmake 二. QT5安装1、安装Qt5的组件2、安装Qt的开发工具3、安装qtcreator4、安装qt55、安装qt charts&#xff08;可选&#xff09; 三、安…

VS2022创建C C++ GTEST工程

原因 需要对带代码进行单元测试&#xff0c;选择在Visual studio 中使用GTEST 框架。 实施 创建一个常规的控制台可执行程序。然后使用NUGET安装包 安装GTEST 头文件和动态库&#xff0c;同时安装GTEST ADAPTER。 安装可能提示找不到包源&#xff0c;此时需要根据提示配置一…

【克隆图】python刷题记录

R2-图 目录 DFS BFS ​ps: 图遍历即可&#xff0c;使用字典来记录访问过的结点。 DFS """ # Definition for a Node. class Node:def __init__(self, val 0, neighbors None):self.val valself.neighbors neighbors if neighbors is not None else []…

苹果CMS:资源采集站如何设置定时采集详细教程讲解

我们搭建好站点之后&#xff0c;会自定义一些采集&#xff0c;但是需要每天去手动执行&#xff0c;有时候甚至会忘记&#xff0c;那我们如何处理呢&#xff1f;今天我们就来介绍一下如何设置定时器。 如果按照官方例子来设置定时器会遇到一个问题就是采集的资源未绑定类型&…

极简Springboot+Mybatis-Plus+Vue零基础萌新都看得懂的分页查询(富含前后端项目案例)

目录 springboot配置相关 依赖配置 yaml配置 MySQL创建与使用 &#xff08;可拿软件包项目系统&#xff09; 创建数据库 创建数据表 mybatis-plus相关 Mapper配置 ​编辑 启动类放MapperScan 启动类中配置 添加config配置文件 Springboot编码 实体类 mapperc(Dao…

Chiplet SPI User Guide 详细解读

目录 一. 基本介绍 1.1.整体结构 1.2. 结构细节与功能描述 二. 输入输出接口 2.1. IO Ports for SPI Leader 2.2. IO Ports for SPI Follower 2.3. SPI Mode Configuration 2.4. Leader IP和Follower IP功能图 三. SPI Programming 3.1. Leader Register Descripti…

ubuntu 配置opencv-python-imsow()报错

python调用imshow&#xff08;&#xff09;时出现下面的错误&#xff1a; error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-c…

六个开源的PDF转Markdown项目

✨ 1: gptpdf gptpdf 是一个利用VLLM解析PDF为Markdown的工具&#xff0c;几乎完美支持数学公式、表格等。 GPTPDF 是一个使用视觉大模型&#xff08;如 GPT-4o&#xff09;将 PDF 文件解析成 Markdown 文件的工具。它主要用于高效地解析 PDF 文档中的排版、数学公式、表格、…

springboot专利信息服务管理系统-计算机毕业设计源码97187

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

【王佩丰 Excel 基础教程】第三讲:查找、替换、定位

文章目录 前言一、查找与替换1.1、按值查找1.2、按格式查找1.3、是否开启单元格匹配1.4、模糊查询 二、定位工具2.1、名称框的相关操作2.2、批注的相关介绍2.2.1、批注的基本操作2.2.2、批注的格式 2.3、使用 “ 定位条件 ” 解决以下问题 总结 前言 跟着B站学习王佩丰 Excel …

LLM工具调用破局:Few-shot Prompting

在大型语言模型&#xff08;LLM&#xff09;的应用中&#xff0c;工具的使用至关重要。我们一直在研究如何提升LLM调用工具的性能。一种常见的提升方法是通过少量样本提示&#xff0c;即将一些模型输入的示例和期望的输出结果直接展示给模型。据Language Models are Few-Shot L…

Jmeter下载、安装、永久汉化(Windows环境)

1、JDK下载 JDK8下载地址https://www.oracle.com/java/technologies/downloads/#java8-windows JDK8的Windows的64位&#xff1a; 2、Jmeter下载 jmeter下载地址https://jmeter.apache.org/download_jmeter.cgi 3、配置环境变量 安装好后&#xff0c;把jdk和jmeter都配置到…

4.JAVA-运算符

算数运算符 隐式类型转换 强制转换 字符串操作 字符相加 小结 自增自减运算符 赋值运算符 关系运算符 逻辑运算符 短路逻辑运算 三元运算符 运算符优先级 这里小括号优先于所有&#xff0c;所以想要哪一个优先运算&#xff0c;就可以将哪一个用小括号扩起来&#xff0c;比较方便…

科普贴:什么是大模型?快速了解大模型基本概念

在人工智能的世界里&#xff0c;大模型就像超级大脑一样&#xff0c;能够处理和理解大量的信息。你可能听说过ChatGPT&#xff0c;它就是大模型的一个典型代表。那么&#xff0c;什么是大模型呢&#xff1f;让我们一起来探索这个神奇的领域。 什么是大模型&#xff1f; 想象一…

EC与小鹅通震撼对接全攻略,一键解锁商业新纪元

客户介绍&#xff1a; 某企业管理咨询有限公司是一家深耕于商务服务业的专业咨询公司&#xff0c;隶属于商界联合品牌旗下。自成立以来&#xff0c;公司一直致力于在团队、产品及服务品质上不断投入与提升&#xff0c;公司的主要业务范围广泛&#xff0c;包括但不限于企业管理…