C++从零基础到入门(1)

目录

一、输入输出 (iostream库)

1.标准输出流cout

2.标准输入流cin

3.标准库iostream

(1)iostream中的窄字符(char)

(2)iostream中的 宽字符(wchar_t)

二、变量与数据类型

1.变量

(1)概念:

(2)变量的声明和初始化:

(3)在变量声明和初始化的过程中需要注意的事项:

2.数据类型

(1)数据类型的分类:

(2)基本数据类型之间的运算规则:

3.进制与进制之间的转化

三、标识符

1.标识符的命名规则:(必须要遵守,否则编译不能通过)

2.c++中的关键字:

四、基本数据类型

1.整型:

2.浮点型:

3.字符型:

4.布尔型boolean——只能取两个值:true,false

五、C++ 运算符

1.算术运算符

2.关系运算符

3.逻辑运算符

4.位运算符

5.其它


一、输入输出 (iostream库)

C++中的输入输出,主要包括标准输出流cout、标准输入流cin和标准库iostream

1.标准输出流cout

cout输出流需要搭配<<输出操作符来使用,如输出语句:

#include <iostream>using namespace std;int main()
{cout << "Hello World" ;return 0;
}

输出结果:

Hello World

这里简单解释一下 <using namespace std; >,C++标准程序库中的所有标识符都被定义于一个名为std的namespace中,也就是我们的 cout 标识符被定义在 std。<using namespace std; >用于告诉编译器在当前程序中使用标准命名空间(std)中的所有标识符,这样在程序中就可以直接使用cout、cin、endl等标准库中的函数和对象,而不必使用完整的限定名来表示。我们也可以像下面一样写Hello World程序:

#include <iostream>int main()
{std::cout << "Hello World" ;// 使用完整的限定名来表示return 0;
}

输出结果:

Hello World

本质上,是将字符串"Hello"插入到cout对象里,并以cout对象作为返回值返回,因此你还可以用<<在后面连续输出多个内容,如:

#include <iostream>using namespace std;int main()
{cout << "Hello " <<"zgl " << "这是你第一个C++程序";return 0;
}

输出结果:

Hello zgl 这是你第一个C++程序

提到cout,最常用到的还有endl操纵符,可以直接将它插入到cout里,起输出换行的效果,如:

#include <iostream>using namespace std;int main()
{cout << "Hello " << endl <<"zgl " << endl << "这是你第一个C++程序";return 0;
}

输出结果:

Hello

zgl

这是你第一个C++程序

2.标准输入流cin

接收一个数据之前,都要先定义一个与之类型一致的变量,用来存放这个数据,然后利用cin搭配>>输入操作符,来接收用户从键盘的输入,如代码:

#include <iostream>using namespace std;int main()
{int a;cin >> a;cout << "get num:" << a << endl;return 0;
}

输出结果如下:

3.标准库iostream

iostream的意思是输入输出流,直接点说就是in(输入) out(输出) stream(流),取in、out的首字母与stream合成。输入和输出是数据传送的过程,数据如流水一样从一处流向另一处。C++形象地将此过程称为流(Stream)。

iostream(.h)库声明的对象分为两组:窄字符(char)、宽字符(wchar_t)。

(1)iostream中的窄字符(char)

主要包含下面对象 :

  • cin:标准输入流
  • cout:标准输出流
  • cerr:错误的标准输出流
  • clog:用于记录的标准输出流

(2)iostream中的 宽字符(wchar_t)

主要包含下面对象 :

  • wcin:标准输入流(宽)
  • wcout:标准输出流(宽)
  • wcerr:错误的标准输出流(面向广角)
  • wclog:用于记录的标准输出流(宽)

iostream中的窄字符(char)与 宽字符(wchar_t)的差异:

        1)char 的大小只有 1 个字节,而 wchar_t 的大小则是平台相关的,通常为 2 或 4 个字节,可以用于编码更多的字符(如中文字)。

        2)char 使用的是默认字符集(如 ASCII),而 wchar_t 使用的是宽字符集(如 UTF-16 或 UTF-32 等)。

        3)对于字符串的处理方式不同,char 类型的字符串使用字符数组(char[]) 来存储,而 wchar_t 类型的字符串则使用宽字符数组(wchar_t[])来存储。

二、变量与数据类型

1.变量

(1)概念:

  •   内存中的一个存储区域,该区域的数据可以在同一范围内不断变化
  •   变量的构成包涵三个要素:数据类型、变量名、存储的值
  •   c++定义变量的格式:数据类型 变量名  =(赋值符号) 变量值;
int a = 5;
//数据类型:int
//变量名:a
//"=":表示赋值符号
//"5":变量值

(2)变量的声明和初始化:

声明变量是指在程序中指定变量的数据类型和名称,而初始化变量是指在声明变量的同时将其赋予一个初始值。

int main()
{int a;//声明一个int型变量aa = 15;//将a的值初始化为15;int b = 20;//声明一个int型变量b并且将其初始化为20return 0;
}

在c++中还可以同时声明并初始化多个变量

声明多个变量:
int a,b,c;
声明并初始化多个变量:
int a = 1,b = 8,c = 9;

(3)在变量声明和初始化的过程中需要注意的事项:

  •    定义变量时,变量名要遵循标识符命名的规则和规范
  • 变量必须先声明,后使用。
  •    变量都定义在其作用域内。在作用域内,他是有效的。
  •    在同一个作用域内,不可以声明两个同名的变量。
  •    定义好变量后,就可以通过变量名的方式对变量进行调用和运算
  •    变量值在赋值时,必须满足变量的数据类型,并且在数据类型有效的范围内变化

2.数据类型

(1)数据类型的分类:

C++的数据类型分为基本数据类型非基本数据类型,在这里主要介绍基本数据类型。

(2)基本数据类型之间的运算规则:

在这里我们讨论的除布尔类型以外的七种基本数据类型变量间的运算

  • 自动类型提升:(容量大小是指表示数的范围的大小)
  • 当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据型。 

此时的容量大小并非指所占的内存空间的大小,而是指表示数据范围的大小:

short--> int--> long--> float--> double                                                                        

short/char-->int--> long--> float--> double(当short/char类型的变量做运算时,结果为int)

  • 强制类型转换:自动类型提升运算的逆运算。
  • (需要将容量大的变量的类型转换转换为容量小的类型转换时使用强制类型转换)
  • 1.需要使用强转符()
  • 2.注意:强制类型转换过程中,可能导致精度损失

整型常量默认类型为int型

浮点型常量默认类型为double型

3.进制与进制之间的转化

所有数字在计算机底层都以二进制形式存在

计算机世界中只有二进制,所有计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。

  • 二进制的由来:由德国数理哲学家莱布尼茨于1679年发明
  • 二进制:0,1——满二进一 ——以0b或0B开头
  • 八进制:0~7——满八进一 ——以0开头(较少使用)
  • 十进制:0~9——满十进一 
  • 十六进制:0~9以及A~F——满十六进一 ——以0x或0X开头表示

二进制转化成十进制:

计算机底层都以补码的方式存储数据。

符号位:0;——+14(原码=补码=反码)

符号位:1;—— -14

原码:(把十进制转为二进制,然后最高位设置为1)

反码:(在原码的基础上,最高位不变,其余位取反<0变1,1变0>)

补码:(反码+1)

  • 十进制转换成二进制:除二取余的逆;
  • 二进制转化成八进制:8 = 2^3;每三个算一位
  • 二进制转化成十六进制:16=2^4;每四个算一位

三、标识符

1.标识符的命名规则:(必须要遵守,否则编译不能通过

  •  由26个英文字母大小写,0-9,_(下划线)组成。
  • 数字不可以开头。
  • c++中是大小是不一样的,长度无限制
  • 不可以使用关键字
  • 不能用连续两个下划线开头,也不能以下划线加大写字母开头,这些被C++保留给标准库使用
  • 函数体外的标识符,不能以下划线开头。
  • 尽量有实际意义
  • 变量名一般用小写字母
  • 自定义类名一般以大写字母开头
  • 如果包涵多个单词,一般使用下划线分隔,或者将后面的单词首字母大写 

2.c++中的关键字:

四、基本数据类型

  

1.整型:

  • short(2字节=16bit)(-2^15~2^15-1)
  • int    (4字节=32bit)(常用)(-2^31~2^31-1)(约21亿)
  • ong  (4字节=32bit)(-2^31~2^31-1)
  • long long (8字节 = 64bit) (-2^63~2^63-1) 

字节(byte):是计算机用于计量存储容量的基本单位,一个字节等于8bit;

位(bit):是数据存储的最小单位。二进制数系统中,每个0或者1就是一个位,叫做bit(比特),其中8bit就称为一个字节

转换关系:

  •    8     bit      = 1Byte
  •   1024 Byte  = 1 KB
  •   1024 KB    = 1 MB
  •   1024 MB   = 1 GB
  •   1024 GB   = 1 TB

2.浮点型:

  • float(单精度)(4字节)
  • 表示数的范围大于long型(声明float型变量必须要以“f”或者“F”结尾)
  • double(双精度)(8字节)
  • long double(长双精度) (8字节) 

3.字符型:

char(1字符=2字节)

字符型变量的三种表现方式:

  • 使用一对( '')括起来的单个字符,内部只能写一个字符。
  • 直接使用unicode值来表示字符型常量:'\uXXXX'——unicode编码集;故一个字符可以存储一个字母,一个汉字,或者其他书面的一个字符
  • 使用转义字符'\'来将其后的字符转变为特殊字符型常量——‘\n’--换行符    '\t'--制表符
  • 字符集:ASCII码(a--97、A--65、0--48)、UTF-8

4.布尔型boolean——只能取两个值:true,false

常使用在流程控制语句中。比如,条件判断、循环结构等

我们不谈boolean类型所占的空间大小。但是真正在内存中分配的话,使用的是4个字节

五、C++ 运算符

C++的基础运算符和C类似,比如:算术运算符、关系运算符、逻辑运算符、位运算符。

1.算术运算符

  C++ 的算术运算符用于处理基本的数学运算。主要包括:加、减、乘、除、取余、自增、自减。

需要注意的是:

除法运算符 /,如果操作数都是整数,那么结果也是整数,小数部分会被舍去。如果想得到浮点数的结果,可以将操作数转为 float 或 double 类型。

取模运算符 % 只适用于整数操作数。如果你需要对浮点数进行类似操作,可以使用函数 fmod()(需引入 <cmath> 头文件)。

在使用这些算术运算符时,请确保操作数遵循相应的数据类型规则,并避免因操作数类型不当导致的错误。同时,在进行数学运算时要注意防止溢出。

2.关系运算符

C++ 的关系运算符用于比较两个操作数之间的关系。关系运算符在条件判断中非常常用,通常用于控制结构(如 if、while)中的表达式。主要包括:等于、不等于、大于、小于、大于等于、小于等于。

需要注意的是:

在使用关系运算符时,请确保操作数具有可比较的类型。同时注意,如果操作数是浮点数,可能会因浮点数精度问题导致比较结果不如预期。通常建议对浮点数的比较使用误差范围,而非直接进行关系运算。

3.逻辑运算符

C++ 的逻辑运算符用于连接或改变多个布尔表达式的值。逻辑运算符在控制结构(如 if、while)中的条件判断语句中广泛使用。主要包括:与、或、非。

需要注意的是:

在使用逻辑运算符时,C++ 采用短路求值策略,即只在需要时执行后续的布尔表达式。例如,对于逻辑与运算 &&,如果第一个表达式为 false,则整个表达式必定为 false,无需计算第二个表达式。这种优化策略有助于提高效率,但可能导致一些副作用被跳过。因此,谨慎考虑布尔表达式间的顺序与副作用。

4.位运算符

C++ 的位运算符用于操作整数类型数据的二进制位。位运算符处理的对象是整数在内存中的位表示。主要包括:位与、位或、按位取反、异或、左移、右移。

需要注意的是:

位运算符仅适用于整数类型(如 int、long、char 等)。在进行位运算时,需要确保操作数遵循相应的数据类型规则。同时,当在 unsigned 类型上执行位移运算时,请特别注意不要引入符号扩展。在使用有符号整数时,注意有符号整数的位移运算符可能会导致未定义的行为。

5.其它

当然还有一些其它的运算符,比如:赋值、逗号、下标、取地址、解引用,这些后续再总结。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于DNA的密码学和隐写术综述

摘要 本文全面调研了不同的脱氧核糖核酸(DNA)-基于密码学和隐写术技术。基于DNA的密码学是一个新兴领域,利用DNA分子的大规模并行性和巨大的存储容量来编码和解码信息。近年来,由于其相对传统密码学方法的潜在优势,如高存储容量、低错误率和对环境因素的抗性,该领域引起…

Geotools-PG空间库(Crud,属性查询,空间查询)

建立连接 经过测试&#xff0c;这套连接逻辑除了支持纯PG以外&#xff0c;也支持人大金仓&#xff0c;凡是套壳PG的都可以尝试一下。我这里的测试环境是Geosence创建的pg SDE&#xff0c;数据库选用的是人大金仓。 /*** 获取数据库连接资源** param connectConfig* return* {…

数据结构实验4:链表的基本操作

目录 一、实验目的 二、实验原理 1. 节点 2. 指针 3.链表的类型 3.1 单向链表 3.2 双向链表 3.3 单向循环链表 3.4 双向循环链表 4. 单链表的插入 4.1 头插法 4.2 尾插法 4.3 在指定位置插入元素 5. 单链表的删除 5.1 删除指定数值的节点 5.2 删除指定位置的节点 …

java基础之Java8新特性-Optional

目录 1.简介 2.Optional类常用方法 3.示例代码 4.示例代码仓库地址 1.简介 Java 8引入了一个重要的新特性&#xff0c;即Optional类。Optional类是为了解决空指针异常而设计的。 在Java中&#xff0c;当我们尝试访问一个空对象的属性或调用其方法时&#xff0c;很容易抛出…

如何创建自己的小程序?零编程一键创建实战指南

当今瞬息万变的数字世界中&#xff0c;拥有一个属于自己的小程序已成为企业与个人展示、服务和互动的重要途径。无需编码知识&#xff0c;通过便捷的云端可视化平台&#xff0c;也可以轻松创建一款符合自身需求且功能丰富的小程序。下面给大家分享如何创建自己的小程序。 1、选…

QT开发 2024最新版本优雅的使用vscode开发QT

▬▬▬▬▬▶VS开发QT◀▬▬▬▬▬ &#x1f384;先看效果 &#x1f384;编辑环境变量 如图添加环境变量&#xff01;&#xff01;&#xff01; 东西全在QT的安装目录&#xff01;&#xff01;&#xff01; 找到的按照我的教程再装一次&#xff01;&#xff01;&#xff01; 点…

OpenCV-21方盒滤波和均值滤波

一、方和滤波 使用API --- boxFiter(src, ddepth, ksize[,dst[,anchor[, normalize[, borderType]]]])方盒滤波 方盒滤波的卷积核如下所示&#xff1a; --- normalize Ture时&#xff0c; a 1 / &#xff08;W*H&#xff09;滤波器的宽高 --- normalize False时&#xff…

(超详细)YOLOV5改进-添加SimAM注意力机制

1、在yolov5/models下面新建一个SimAM.py文件&#xff0c;在里面放入下面的代码 代码如下&#xff1a; import torch import torch.nn as nnclass SimAM(torch.nn.Module):def __init__(self, e_lambda1e-4):super(SimAM, self).__init__()self.activaton nn.Sigmoid()self…

回归预测 | Matlab基于SO-LSTM蛇群算法优化长短期记忆神经网络的数据多输入单输出回归预测

回归预测 | Matlab基于SO-LSTM蛇群算法优化长短期记忆神经网络的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SO-LSTM蛇群算法优化长短期记忆神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SO-LSTM蛇群算法优化…

鸿蒙HarmonyOS学习手册_入门篇

鸿蒙HarmonyOS学习手册_入门篇 文章目录 鸿蒙HarmonyOS学习手册_入门篇入门快速入门开发准备基本概念UI框架应用模型工具准备 构建第一个ArkTS应用&#xff08;Stage模型&#xff09;-快速入门-入门创建ArkTS工程ArkTS工程目录结构&#xff08;Stage模型&#xff09;构建第一个…

【NLP】多标签分类【上】

简介 《【NLP】多标签分类》主要介绍利用三种机器学习方法和一种序列生成方法来解决多标签分类问题&#xff08;包含实验与对应代码&#xff09;。共分为上下两篇&#xff0c;上篇聚焦三种机器学习方法&#xff0c;分别是&#xff1a;Binary Relevance (BR)、Classifier Chain…

基于YOLOv5+单目的物体距离和尺寸测量

目录 1&#xff0c;YOLOv5原理介绍 2,单目测尺寸以及距离原理 2.1单目测物体距离 2.2单目测物体尺寸 3&#xff0c;成果展示 3.3测距离 3.2测尺寸&#xff1a; 1&#xff0c;YOLOv5原理介绍 YOLOv5是目前应用广泛的目标检测算法之一&#xff0c;其主要结构分为两个部分&a…