C++的基础语句

C++前奏

  • 1.变量的定义
  • 2.键入和输出
  • 3.运算符
  • 4.sizeof()函数
  • 5.判断
  • 6.goto语句
  • 7.总结

这个专题,我会用简单的语言介绍C++的语法,并会适当的对比实现相同或相似功能的C++与python代码写法上的不同。

1.变量的定义

对于python来说,我们可以跳过定义直接使用“=”为变量名赋值。但是C++有严格的声明、定义调用流程,因此在赋值之前必须对需要用到的变量进行声明和定义:

# include<stdio.h> // 引用头文件
# include<iostream>
using std::string; // 可以使用字符串类
using namespace std; // 指定命名空间,以便
// 在代码中使用该命名空间中定义的所有标识符
// 类似于python中的from XXX import *
int main() // 定义主函数
{
	int a; // 定义一个变量a,用于存储int类型数据
}

在C++中,主函数与其他函数一样,需要有函数类型、函数参数,但在python中,我们不需要通过主函数来告诉编译器执行哪些内容。本文之后的C++代码将不再写全引用和主函数,如果大家想要运行记得自行补全。
C++语言在声明变量的时候就可以为变量赋值,方式如下:

int a=10;
int b=10,c=10;

但需要注意的是,赋值之前必须要保证变量是有定义的,这就意味着一下写法是不能正常执行的:

int a=b=c=10; // 赋值语句从右向左进行,但b和c没有定义

2.键入和输出

C++中,虽然也可以使用scanf和printf作为输入和输出,但是使用系统函数cin和cout完成这一任务更为方便。
首先介绍输出,输出的语法为cout加两个小于号再加输出内容,我们可以在一行内多次数用两个小于号输出不同内容:

int a,b,c; // int是一个整数类,会自动给其实例赋初值,这点与Python相似。
		   // 不了解类和面对对象的小伙伴先不要着急,后面会讲到~
cout<<a;
cout<<b<<c;

运行上面的代码可以发现,终端输出a的值后,并没有换行或空格,而是紧接着输出了b和c的值。如果想要换行,除了使用cout<<“\n”;语句之外还可以在接输输出时加入endl:

int a,b,c;
cout<<a<<endl;
cout<<b<<c<<endl;

介绍过cout之后,我们再来看看cin。与cout类似,输入的语法为cin加两个大于号再加用于接收的内存空间。同理,我们也可以用多组双大于号来一次性指定多个变量进行接收:

int a,b,c;
cout<<"输入整数:";
cin>>a>>b>>c;
/*
或可写成
cin>>a;
cin>>b;
cin>>c;
*/
cout<<"\n"<<a<<b<<c<<endl;

通过以上代码我们可以键入三个数,并由变量a、b、c接收。输入过程以空格或回车作为结束标志。在计算机读到回车后,会判断输入是否结束。下面我们运行代码分析计算机具体怎样实现:
在这里插入图片描述
以上,分别是四次键入的效果。第一次,我们输入一个数字后按一次回车,在输入三次后,计算机会自动结束输入,执行cout输出。第二次,我们以空格作为分隔,在输入五个数字后按回车,可以看到计算机会自动将对应数字赋值给三个变量,当变量全被赋值后,会自动结束赋值,多输入的数字不会保存。第三次输入时1与2之间有两个空格,但计算机在读到第一个回车后并没有终止输入,说明多个空格和一个空格作为输入的分隔时拥有相同的效果。第四次输入时每个数字后面都跟着一个空格和一个回车,计算机依然在读到三个数后才结束输入过程。
在Python中,键入使用的是input,输出则使用print。由于Python使用空间之前不需要声明类型,所以默认的输入类型为字符串,并且空格不能被作为分割符记录,而是会被当做是输入的字符,只有遇到会车时,输入才会停止:

val=input("输入内容:")
print(val,type(val))
# 输出为:输入内容:1 2 3 4
#        1 2 3 4 <class 'str'>

如果我们希望输入内容为其他类型,可以在接收后进行类型转换。

3.运算符

在之前python的学习中,我们已经学到过python中承认的逻辑运算符号,典型的有and,or和not。C++显然是不支持这些英文单词作为逻辑运算符的,其表达与、或、非的逻辑关系分别用符号:

&&、||、!

需要注意的是,这种表达python是接受的:

int a=10,b=8;
cout<<(a&&b)<<" "<<(a||b)<<" "<<(!a)<<endl;
// 输出为1 1 0

在C++中,布尔类型的值依然只有0和1,其中0代表false,1则代表true。如果用普通数字用来描述false和true,那么0表示false,非0均为true。
如果我们只写了一个&或者|表示的则是数字二进制表示的按位与和按位或,python也同样适用。此外,常见的安慰操作符还有按位亦或“^”:

int a=10,b=8;
// 10=1010 8=1000
cout<<(a&b)<<endl; // 每一个对应位值均为1时记录1,否贼记录0。=1000
cout<<(a|b)<<endl; // 每一个对应位值均为0时记录0,否贼记录1。=1010
cout<<(a^b)<<endl; // 每一个对应位值不同时记录1,相同则记录0。=0010
// 输出为:8
//       10
//       2

移位操作符在python和C++中是相同的,这里就不过多展开了。

4.sizeof()函数

C++没有像python中那样方便的列表、字典等类型,可以轻易地添加新的元素。因此如果想要为数组等型增加长度时,就首先需要扩充数组的长度,具体扩大多少就需要看你想要添加多少元素,以及每个元素所占的空间。sizeof函数就可以完成计算每种类型所占空间大小(单位:字节)的计算:

int a;
std::string b;
float c;
double d;
cout<<sizeof(a)<<" "<<sizeof(b)<<" "<<sizeof(c)<<" "<<sizeof(d)<<endl;
// 输出为:4 32 4 8

python中有计算可迭代类型长度的函数len,但是在C++中,我们想要计算数组的长度就只能通过数组所占空间的总大小除以数组每个元素所占空间的大小间接得出:

char a[10];
cout<<sizeof(a)/sizeof(a[0]);
// 输出为:10

5.判断

提起判断,大家都熟悉的一定是if-else语句。在python中,该语句写成:

if 条件A:
elif 条件B:
else:

而在C++中写法则略有不同:

if(条件A){}
else if(条件B){}
else{}

我们只需要注意一下写法上的不同就可以了。但是C++还支持一种python中没有的判断句switch:

switch(表达式)
{
case :
case :
.
.
.
default:
}

switch语句的括号里根着的表达式可以有非单纯0或1的多重结果,也可以不是数字。case后面要跟表达式的可能结果,default后面不需要跟内容。Switch语句中,每个冒号后面不用额外添加花括号,但是每个case和default在结束前必须要加一个break,否则如果中间的case满足了表达式的条件,这个case后面的语句将逐条被执行(自动忽略case),直到遇到break。原则上default要放在最后面,如果case成立,default将自动不会执行,所以即使case没有加break,default下的语句也不会在某条case成立时执行。下面给大家展示一个例子:
在这里插入图片描述
这段代码给到大家:

char a;
cout<<"请输入字母:";
cin>>a;
switch (a)
{
case 'a':
    cout<<'a'<<endl;
    // break;
case 'b':
    cout<<'b'<<endl;
    // break;
case 'c':
    cout<<'c'<<endl;
    break;
case 'd':
    cout<<'d'<<endl;
    // break;
default:
    cout<<"not fond"<<endl;
    // break;
}

有兴趣的小伙伴可以自行实验。

6.goto语句

goto也是C++的特有,其可以强制程序跳转到另一位置执行,类似于循环。但是由于goto的规范使用难度较高,滥用goto又会导致代码可读性和可维护性变差,所以python禁用了这个语句。因为该语句并不推荐使用,所以我仅做简单的介绍:

int a=0,i=0;
lable:
a++;
cout<<a<<' ';
if(i<10)
{
    i++;
    goto lable; // 强行跳转到lable标记处
    }

这样我们就利用强制跳转实现了一个执行十次的循环。

7.总结

本节我们简单介绍了C++中一些基本的语句、逻辑判断和运算,并与Python进行了一些对比。相信看过我Python专栏的小伙伴可以很好的理解。其实,不同的语言只是在语法上有较大的差异,在算法实现的逻辑上则没有太大不同。下一节我会继续分享C++的循环和函数。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Efficient Classification of Very Large Images with Tiny Objects(CVPR2022补1)

文章目录 Two-stage Hierarchical Attention SamplingsummaryOne-stageTwo-Stage内存需求 Efficient Contrastive Learning with Attention Sampling Two-stage Hierarchical Attention Sampling summary 从一个大图像中按照指定的低分辨率比例和位置提取出一个小图块 一阶段…

web前端——clear可以清除浮动产生的影响

clear可以解决高度塌陷的问题&#xff0c;产生的副作用要小 未使用clear之前 <!DOCTYPE html> <head><meta charset"UTF-8"><title>高度塌陷相关学习</title><style>div{font-size:50px;}.box1{width:200px;height:200px;backg…

阿里云盘在线自动签到-无需部署

声明&#xff1a;本文的代码内容来源于知乎用户小猪猪和艾欧娜传播此内容是基于学术研究和学习目的&#xff0c;遵循了适用的版权规定和学术研究的合理使用原则。 作者只对源代码进行了一点点改动&#xff0c;本文主要演示如何使用金山文档的每日定时任务&#xff0c;执行阿里云…

nccl 源码安装与应用示例 附源码

1&#xff0c; 官方下载网址 注意&#xff0c;本文并不使用nv预编译的包来安装&#xff0c;仅供参考&#xff1a; NVIDIA Collective Communications Library (NCCL) | NVIDIA Developer 2&#xff0c;github网址 这里是nv开源的nccl源代码&#xff0c;功能完整&#xff0c;不…

Adobe Experience Design安装指南

XD&#xff08;Adobe Experience Design&#xff09;下载链接 https://pan.baidu.com/s/1MVcaE2GB1Q9YpgmgDxUGJw?pwd0531 1.鼠标右击【Adobe XD 55.1(64bit)】压缩包选择&#xff08;win11以上系统需先点击“显示更多选项”&#xff09;【解压到 Adobe XD 55.1(64bit)】。 …

《JVM由浅入深学习【四】 2023-12-24》JVM由简入深学习提升分享

JVM由简入深学习提升分享四 1.JVM中java堆的特点及作用2. JVM中对象如何在堆内存中分配3. JVM堆内存中的对象布局 1.JVM中java堆的特点及作用 是线程共享的一块区域虚拟机启动时就创建了是虚拟机中内存占用很大的一块存放所有的实例对象和数组GC主要的作用区域可分为新生代&am…

关于“Python”的核心知识点整理大全50

目录 python_repos.py 17.1.6 概述最受欢迎的仓库 python_repos.py 17.1.7 监视 API 的速率限制 注意 17.2 使用 Pygal 可视化仓库 python_repos.py 17.2.1 改进 Pygal 图表 python_repos.py 往期快速传送门&#x1f446;&#xff08;在文章最后&#xff09;&#xf…

09、docker 安装nacos并配置mysql存储配置信息

docker 安装nacos并配置mysql存储配置信息 1、docker启动nacos的各种方式2、Docker安装nacos3、MySQL中新建nacos的数据库4、挂载数据or配置目录5、运行 1、docker启动nacos的各种方式 内嵌derby数据源 docker run -d \ -e PREFER_HOST_MODEhostname \ -e SPRING_DATASOURCE_…

python旅游大数据分析可视化大屏 游客分析+商家分析+舆情分析 计算机毕业设计(附源码)Flask框架✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

详解静态网页数据获取以及浏览器数据和网络数据交互流程-Python

目录 前言 一、静态网页数据 二、网址通讯流程 1.DNS查询 2.建立连接 3.发送HTTP请求 4.服务器处理请求 5.服务器响应 6.渲染页面 7.页面交互 三、URL/POST/GET 1.URL 2.GET 形式 3.POST 形式 四.获取静态网页数据 1.requests库 点关注&#xff0c;防走丢&am…

Linux vi/vim 教程

文章目录 【 1. vi/vim 的三种模式 】1.1 命令模式1.2 输入模式1.3 底线命令模式 【 2. 实例 】【 3. vim 的其他命令 】 所有的 Unix Like 系统都会内建 vi 文本编辑器&#xff0c;其他的文本编辑器则不一定会存在。目前我们使用比较多的是 vim 编辑器。vim 从 vi 发展出来&am…

深度确定性策略梯度 DDPG

深度确定性策略梯度 DDPG 深度确定性策略梯度 DDPG模型结构目标函数算法步骤适合场景 深度确定性策略梯度 DDPG A2C、A3C 都是在线策略&#xff0c;在与环境交互时&#xff0c;样本参数更新效率低&#xff0c;所以主要是应用在离散空间&#xff0c;计算量没那么大。 DDPG 专用…

aps审核-模电英文稿

模拟电子线路 Analog circuit 需要熟悉课程名&#xff0c;一句话简单概括课程内容&#xff0c;准备一些重点内容介绍。 This course mainly introduces the properties(n.性质) of semiconductors(半导体) and transistors, and then analyzes and masters amplification circ…

算法专题四:前缀和

前缀和 一.一维前缀和(模板)&#xff1a;1.思路一&#xff1a;暴力解法2.思路二&#xff1a;前缀和思路 二. 二维前缀和(模板)&#xff1a;1.思路一&#xff1a;构造前缀和数组 三.寻找数组的中心下标&#xff1a;1.思路一&#xff1a;前缀和 四.除自身以外数组的乘积&#xff…

java企业人事信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web企业人事信息管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境 为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为M…

DeepSpeed: 大模型训练框架

背景&#xff1a; 目前&#xff0c;大模型的发展已经非常火热&#xff0c;关于大模型的训练、微调也是各个公司重点关注方向。但是大模型训练的痛点是模型参数过大&#xff0c;动辄上百亿&#xff0c;如果单靠单个GPU来完成训练基本不可能。所以需要多卡或者分布式训练来完成这…

PE解释器之PE文件结构

PE文件是由许许多多的结构体组成的&#xff0c;程序在运行时就会通过这些结构快速定位到PE文件的各种资源&#xff0c;其结构大致如图所示&#xff0c;从上到下依次是Dos头、Nt头、节表、节区和调试信息(可选)。其中Dos头、Nt头和节表在本文中统称为PE文件头(因为SizeOfHeaders…

Nacos设置账号密码

1、控制台设置 # 开启账号密码验证 nacos.core.auth.enabledtrue# 设置账号密码 nacos.core.auth.usernamenacos nacos.core.auth.passwordnacos1232、数据库设置 密码为&#xff1a;nacos&#xff0c;对应加密信息是&#xff1a; $2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2k…

文件分割合并助手

二进制文件合并分割器 时间: 2024.01.03 作者: FlameCyclone 自己写的一个能方便分割合并文件的小工具 使用说明 输出文件名 输出文件名规则前缀文件名开始固定名称序号(10/16进制显示, 宽度以输出最大序号为准)分割范围(16进制显示, 宽度以输出最大范围为准)CRC32校验码…

go语言``反引号用法归纳——多行输出和Tag标签(指定json名称、MySQL名称))

一、多行输出 示例 func main() {str1 : 反引号多行字符串str2 : "双引号" " 多行" " 字符串"//str3 : 单引号" //" 多行" //" 字符串str4 : "双引号\n" " 多行\n" &quo…