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

news2025/1/12 16:03:30

目录

一、输入输出 (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型变量a

    a = 15;//将a的值初始化为15;

    int b = 20;//声明一个int型变量b并且将其初始化为20

    return 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.coloradmin.cn/o/1373096.html

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

相关文章

Map与JSONObject区别

相同点&#xff1a; 都可以存key-value&#xff1b;key是唯一的,如果key重复了会覆盖前面的 不同点&#xff1a; &#xff08;1&#xff09;JSONObject 不可以存空&#xff0c;Map可以存空。 &#xff08;2&#xff09;Map由jdk提供&#xff0c;JsonObject需要第三方jar包提供。…

搜索与图论第一期 DFS(深度优先搜索)

前言 DFS这部分难度不大&#xff0c;大家应该完全掌握&#xff01;&#xff01;&#xff01; 一、DFS的基本内容 内容&#xff1a; 深度优先遍历图的方法是&#xff0c;从图中某顶点v出发&#xff1a; &#xff08;1&#xff09;访问顶点v&#xff1b; &#xff08;2&#…

使用Linux防火墙管理HTTP流量

在Linux系统中&#xff0c;防火墙是用于控制网络流量的重要工具。通过防火墙&#xff0c;你可以根据需要限制、过滤或允许特定的网络流量&#xff0c;从而提高系统的安全性。在处理HTTP流量时&#xff0c;防火墙可以帮助你实施访问控制、流量监控和其他安全策略。 iptables i…

【NVIDIA】Jetson Orin Nano系列:烧写Ubuntu22.04

1、简介 最新的sdk-manager已经可以安装到Ubuntu22.0&#xff0c;也支持在 Jetson Orin Nano 上烧写Ubuntu22.04。 官网介绍&#xff1a;https://developer.nvidia.com/sdk-manager 2、版本介绍 JetPack版本&#xff1a;https://developer.nvidia.com/embedded/jetpack-ar…

Camunda Event Based Gateway

一&#xff1a;bpmn 二&#xff1a;java 如果没有收到信号&#xff0c;超过等待时间&#xff0c;流程进入总经理审批&#xff0c;如果在等待时间内收到信号&#xff0c;流程进入副总经理审批。 示例1&#xff1a;发送信号事件&#xff0c;流程进入副总经理审批。 repository…

vue element-ui的table列表中展示缩略图片效果实例

这篇文章主要给大家介绍了关于vue element-ui的table列表中展示多张图片(可放大)效果的相关资料,文中通过代码示例介绍的非常详细,需要的朋友可以参考下 一、效果图 二、代码部分 1、原理 使用 <el-table-column> 和 <el-image> 组件来在表格中插入缩略图 2、te…

学习笔记之——3D Gaussian Splatting源码解读

之前博客对3DGS进行了学习与调研 学习笔记之——3D Gaussian Splatting及其在SLAM与自动驾驶上的应用调研-CSDN博客文章浏览阅读450次。论文主页3D Gaussian Splatting是最近NeRF方面的突破性工作&#xff0c;它的特点在于重建质量高的情况下还能接入传统光栅化&#xff0c;优…

CMU15-445-Spring-2023-Project #2 - B+Tree

前置知识&#xff1a;参考上一篇博文 CMU15-445-Spring-2023-Project #2 - 前置知识&#xff08;lec07-010&#xff09; CHECKPOINT #1 Task #1 - BTree Pages 实现三个page class来存储B树的数据。 BTree Page internal page和leaf page继承的基类&#xff0c;只包含两个…

人工智能:未来智慧城市建设的“智慧大脑”与核心价值

目录 一、引言 二、人工智能在智慧城市中的应用实例 三、人工智能对智慧城市建设的核心价值 四、面临的挑战与未来展望 五、结语 六、附&#xff1a;智慧城市全套解决方案大合集 - 下载 一、引言 随着科技的飞速发展&#xff0c;智慧城市的概念逐渐深入人心。智慧城市利…

爬虫你需要知道的:什么是http请求

1. 什么是http请求 我们将通过发送http请求来获取网页内容。http是HyperText Transfer Protocol的缩写&#xff0c;意思是超文本传输协议&#xff0c;它是一种客户端和服务器之间的请求响应协议。 浏览器就可以看作是一个客户端&#xff0c;当我们在浏览器地址栏输入想访问的…

uniapp在web端怎么使用svg图标呢

在图标库中添加好项目用到的图标&#xff0c;点击symbol点击生成在线链接 点击生成的在线链接&#xff0c;此时会跳转到一个新窗口&#xff0c;是一个js文件 复制这个js文件的内容 然后在uniapp中新建svg.js文件&#xff0c;把从上面复制的代码粘贴到这个svg.js中 在main.js中引…

创建并美化Github主页(内含组件)

目录 1、创建仓库 2、美化 1、包含多种 2、活动统计图 3、资料奖杯 4、文字的打字特效 5、中文网站卡片 6、贪吃蛇贡献图 7、可参考的页面 最近有想要写开源的打算了&#xff0c;计划了好久好久好久&#xff0c;不知道写啥(目前仍然不知道)…… 俗话说人活一张脸&#xff0…

“Tab“ 的新型可穿戴人工智能项链

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

uni微信小程序强制用户更新版本

强制更新的代码参考官方文档 uni.getUpdateManager() | uni-app官网 我这边的如下&#xff1a; //检查版本更新const updateManager uni.getUpdateManager();updateManager.onCheckForUpdate(function (res) {// 请求完新版本信息的回调console.log(res.hasUpdate, "是…

ABeam×StartUp丨ABeam旗下德硕管理咨询(深圳)新创部门拜访「光子晶体科技」

光子晶体科技 ABeamStartUp 光子透明芯片 显示技术 光学材料 近日&#xff0c;ABeam 旗下德硕管理咨询&#xff08;深圳&#xff09;有限公司&#xff08;以下简称“ABeam-SZ”&#xff09;新创部门一行拜访了深圳光子晶体科技有限公司&#xff08;以下简称“光子晶体科技”…

Ubuntu系统中指定端口防火墙状态查询与操作

浏览器访问&#xff1a; 如果遇到如山图所示的情况&#xff0c;既有可能是防火墙的问题。具体解决方案参照如下&#xff1a; 1.指定端口的防火墙状态查询 &#xff08;1&#xff09;查询命令 sudo ufw status | grep 8081/tcp #其中8081为要查询的端口号 如果端口是打开的…

你真的掌握了“C语言分支循环”吗

目录 前言 1. if语句 1.1 if 1.2 else 1.3 分支中包含多条语句 1.4 嵌套if 1.5 悬空else问题 2. 关系操作符 3. 条件操作符 4. 逻辑操作符&#xff1a;&& , || , &#xff01; 4.1 逻辑取反运算符 4.2 与运算符 4.3 或运算符 4.4 练习&#xff1a;闰年的判…

C++枚举类型可以作为返回值类型吗

当然&#xff1a; #include <iostream> // 定义一个枚举类型 enum class Color { RED, GREEN, BLUE }; // 函数返回枚举类型 Color getRandomColor() { static int nextColorIndex 0; Color color Color(nextColorIndex); nextColorIndex; if (nextColor…

DevEco Studio for Mac:zsh: command not found: ohpm

一、检查是否配置有ohpm环境 1、新打开一个终端输入export&#xff0c;查看是否有 ohpm路径&#xff1a; 二、如果没有找到ohpm路径&#xff0c;开始配置环境 。 1、查找本机ohpm路径&#xff0c;并记录ohpm解释器的路径&#xff1a; 2、打开终端工具&#xff0c;执行命令 ech…

webpack魔法注释-预获取/预加载模块

Webpack v4.6.0 增加了对预获取&#xff08;prefetch&#xff09;和预加载&#xff08;preload&#xff09;的支持。 在声明 import 时&#xff0c;使用下面这些内置指令&#xff0c;可以让 webpack 输出“resource hint”&#xff0c;来告知浏览器&#xff1a; prefetch&…