C++的基础语句

news2024/10/7 10:18:32

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++的循环和函数。

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

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

相关文章

python统计分析——直方图(plt.hist)

使用matplotlib.pyplot.hist()函数绘制直方图 from matplotlib.pyplot as pltdata_setnp.array([2,3,3,4,4,4,4,5,5,6]) plt.hist(fish_data) 下面介绍plt.hist()函数中常用的几个重要参数&#xff08;参数等号后为默认设置&#xff09;&#xff1a; &#xff08;1&#xff0…

从C++习题中思考

目录 一.开始1.1 二.变量和基本类型 C Peimer习题集第5版练习。 一.开始 1.1 编写程序&#xff0c;提示用户输入2个整数&#xff0c;打印出这两个整数指定的范围内的所有整数。 方式1&#xff1a;使用while循环。 #include<iostream> using namespace std; int main() …

RA4000CE (RTC模块)适用于汽车,工作温度范围宽,稳定性高

RA4000CE是一个集成了32.768 kHz数字温度补偿晶体振荡器(DTCXO)的RTC模块&#xff0c;适用于汽车&#xff0c;工作温度范围宽&#xff0c;稳定性高。它包括各种功能&#xff0c;如具有闰年校正的秒到年时钟/日历&#xff0c;时间警报&#xff0c;唤醒计时器&#xff0c;时间更新…

深入了解隧道代理HTTP的协议与技术细节

隧道代理HTTP&#xff0c;作为一种网络通信的桥梁技术&#xff0c;其背后的协议与技术细节承载着网络世界的无尽奥秘。对于技术人员而言&#xff0c;深入了解这些细节&#xff0c;不仅有助于优化网络性能&#xff0c;还能为网络安全提供坚实的保障。 一、隧道代理HTTP的协议基…

QQ邮件发送(PHP的Laravel)

1. 开启 QQ 邮箱的 SMTP 支持 2.里面会一个类似于密码之类&#xff08;复制一下&#xff09; 3.然后再 .env文件里面配置一下 MAIL_DRIVERsmtp —— 使用支持 ESMTP 的 SMTP 服务器发送邮件&#xff1b; MAIL_HOSTsmtp.qq.com —— QQ 邮箱的 SMTP 服务器地址&#xff0c;必…

MySQL之四大引擎、账号管理以及建库认识

目录 一、数据库存储引擎&#xff08;发动机&#xff09; 1.1、认识引擎 1.2、查看存储引擎 1.3、引擎常识 1.4、support字段说明 1.5、四大引擎 二、数据库管理 2.1、元数据库介绍&#xff1a; 2.2、分类&#xff1a; 2.3、增删改查以及使用操作 2.4、权限 三、数…

【docker】安装 Redis

查看可用的 redis版本 docker search redis拉取 redis最新镜像 docker pull redis:latest查看本地镜像 docker images创建挂在文件 mkdir -pv /test1/docker_volume/redis/datamkdir -pv /test1/docker_volume/redis/confcd /test1/docker_volume/redis/conf/touch redis.con…

八大算法排序@希尔排序(C语言版本)

目录 希尔排序概念算法思想示例分析结论算法步骤选择增量序列按增量分组逐步缩小增量 算法优势 代码实现核心算法希尔排序代码实现&#xff1a; 时间复杂度空间复杂度特性总结 该排序会关联到直接插入排序的知识点&#xff0c;如果对于直接插入排序还有所疑惑&#xff0c;可以跳…

Android studio ViewPager2 底部圆点指示器应用设计

一、activity_main.xml布局文件&#xff1a; <androidx.viewpager2.widget.ViewPager2android:id"id/viewpager2"android:layout_width"403dp"android:layout_height"442dp"app:layout_constraintEnd_toEndOf"parent"app:layout_c…

基于YOLOv8深度学习的人脸面部表情识别系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

基于Python +Selenium的爬虫详解

今天我们来详细学习一些 selenium 的强大用法 一、selenium简介 由于requests模块是一个不完全模拟浏览器行为的模块&#xff0c;只能爬取到网页的HTML文档信息&#xff0c;无法解析和执行CSS、JavaScript代码&#xff0c;因此需要我们做人为判断&#xff1b; 1、什么是sele…

OR-3H7(车规级),对标ACPL-217等

提供隔离反馈 逻辑电路之间的接口 提供1通道和4通道 电平转换 DC和AC输入 SMPS中的调节反馈电路 消除接地环路 特征 电流传输比 &#xff1a; IF 5mA时最小 50%&#xff0c;VCE 5V&#xff0c;Ta25 C 高输入输出隔离电压。&#xff08;VISO3&#xff0c;750Vrms&…

微服务-理论(CAP,一致性协议)

CAP理论 关于CAP理论的介绍可以直接看这篇文章 CAP分别是什么&#xff1f; 一致性&#xff08;Consistency 一致性包括强一致性&#xff0c;弱一致性&#xff0c;最终一致性。 一致性其实是指数据的一致性&#xff0c;为什么数据会不一致呢&#xff1f; 如上面这张图&…

循环购模式:重塑消费返利的新趋势

在当今的消费市场中&#xff0c;返利模式已不再是新鲜事。然而&#xff0c;循环购模式以其独特的“消费即分享&#xff0c;分享即赚钱”的核心理念&#xff0c;正在迅速成为消费者和商家共同关注的新焦点。这种模式的出现&#xff0c;不仅重新定义了消费与返利的关系&#xff0…

23款奔驰GLC260L升级香氛负离子 车载香薰

奔驰原厂香氛系统激活原车自带系统&#xff0c;将香气加藏储物盒中&#xff0c;通过系统调节与出风口相结合&#xff0c;再将香味传达至整个车厢&#xff0c;达到净化车厢空气的效果&#xff0c;让整个车厢更加绿色健康&#xff0c;清新淡雅。星骏汇小许Xjh15863 产品功能&…

Shopee买家通系统批量注册虾皮买家号更轻松

Shopee买家通系统是一款高效、方便的工具&#xff0c;为用户提供了全自动批量注册虾皮买家号的便捷体验。在使用该系统进行自动注册时&#xff0c;用户可以享受到一系列智能化的操作&#xff0c;从而省去了繁琐的步骤&#xff0c;让整个注册流程更加轻松愉快。 首先&#xff0c…

暂时性死区:JavaScript 中隐藏的陷阱

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

CRM系统如何实现市场销售管理?CRM系统有哪些营销功能

CRM管理系统中的营销管理模块&#xff0c;它的锋芒常被销售管理所掩盖&#xff0c;但对于企业的业务来说同样重要。营销部门虽然不像销售人员一样直接面对客户&#xff0c;却是挖掘线索、商机的重要角色。CRM在市场营销领域的关键功能包括&#xff1a;营销漏斗、客户细分、营销…

软性演员-评论家算法 SAC

软性演员-评论家算法 SAC 软性演员-评论家算法 SAC优势原理软性选择模型结构目标函数重参数化熵正则化代码实现 软性演员-评论家算法 SAC 优势原理 DDPG 的问题在于&#xff0c;训练不稳定、收敛差、依赖超参数、不适应复杂环境。 软性演员-评论家算法 SAC&#xff0c;更稳定…

【算法挨揍日记】day46——377. 组合总和 Ⅳ\、96. 不同的二叉搜索树

377. 组合总和 Ⅳ 377. 组合总和 Ⅳ 题目描述&#xff1a; 给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 解题思路&#xff1a; 算法思路&a…