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

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

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

相关文章

定岗定编设计:企业职能部门定岗定编设计项目成功案例

一、客户背景及现状分析 某大型车辆公司隶属于某央企集团&#xff0c;建于20世纪60年代&#xff0c;是中国高速、重载、专用铁路车辆生产经营的优势企业&#xff0c;轨道车辆制动机研发制造的主导企业&#xff0c;是隶属于国内最大的轨道交通设备制造上市企业的骨干二级公司。公…

AI绘图软件,科技之旅绘画

科技与艺术的碰撞总能产生令人惊叹的火花&#xff0c;现在小编要给大家介绍一款引领未来艺术潮流的AI绘图软件——首助编辑高手。这是一款将人工智能与创意绘画完美结合的软件&#xff0c;它将为你打开一扇全新的创意之门。 所需工具&#xff1a; 一个【首助编辑高手】软件 …

Qt第一个UI程序设计

在第一个Qt程序的基础上我对ui界面进行设计&#xff0c;点击设计按钮 然后 拖动Label按钮输入想要输入的语句。 运行结果如下图。

通过用户输入数字,并计算二次方程

通过用户输入数字&#xff0c;并计算二次方程 以下实例为通过用户输入数字&#xff0c;并计算二次方程&#xff1a; 实例(Python 3.0) # Filename : test.py # author by : www.dida100.com# 二次方程式 ax**2 bx c 0 # a、b、c 用户提供&#xff0c;为实数&#xff0c;a…

案例1—综合项目组网(2)

交换机连接服务器&#xff1a; 服务器虚拟化&#xff1a; 1. 为什么要用虚拟化技术 2. 虚拟化和NFV的区别 3. 将8台服务器虚拟化为一个资源池的大致步骤 4. 服务器规划情况&#xff1a;管理网和业务网 交换机连接服务器&#xff1a; 1&#xff09;将交换机和服务器相连&am…

算法巡练day03Leetcode203移除链表元素707设计链表206反转链表

今日学习的文章视频链接 https://www.bilibili.com/video/BV1nB4y1i7eL/?vd_source8272bd48fee17396a4a1746c256ab0ae https://programmercarl.com/0707.%E8%AE%BE%E8%AE%A1%E9%93%BE%E8%A1%A8.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE 链表理论基础 见我的博…

计算机组成原理 主存和CPU连接与主存提速方案

文章目录 主存与CPU的连接译码器线选法译码片选法总结 位拓展字拓展字位同时拓展 主存提速方案存储周期双端口RAM多模块存储器单体多字存储器多模块多体并行存储器存储器高位交叉编址低位交叉编址 主存与CPU的连接 #mermaid-svg-3wv6WzRP2BvKEHQZ {font-family:"trebuchet…

【线上问题】两台服务器的时间不一致导致jwt解析错误

目录 一、问题描述二、解决方法 一、问题描述 1.线上生产问题&#xff0c;本地和测试环境均无问题 2.本地和测试由于网关和登录服务均在同一台机器 3.线上的登录服务和网关部署不在一起&#xff0c;登录服务的时间正常&#xff0c;网关服务的服务器时间比实际快5秒 4.登录服务j…

负缓存 (在 DNS 中较为常见)

摘要 负缓存&#xff0c;也被称为负值缓存或负面缓存&#xff0c;指的是在域名系统&#xff08;DNS&#xff09;中记录和重用之前失败查询结果的机制。当DNS服务器无法解析一个域名时&#xff0c;它会返回一个特定错误码&#xff08;例如NXDOMAIN&#xff09;&#xff0c;指示…

ChatGPT付费创作系统V2.6.2独立版 +WEB端+ H5端 + 小程序端

详情介绍 安装测试环境:Nginx 1.20+PHP7.4+MySQL 5.7 演示网址已升级至2.6.2最新版,仅供研究测试 WEB端:https://chat.ttbobo.cn 体验后台:https://chat.ttbobo.cn/admin 账号:admin 密码:123456 ChatGPT付费创作系统V2.6.2独立版 +WEB端+ H5端 + 小程序端 - 百创…

鸿蒙原生应用再添新丁!中国移动 入局鸿蒙

鸿蒙原生应用再添新丁&#xff01;中国移动 入局鸿蒙 来自 HarmonyOS 微博1月2日消息&#xff0c;#中国移动APP启动鸿蒙原生应用开发#&#xff0c;拥有超3亿用户的中国移动APP宣布&#xff0c;正式基于HarmonyOS NEXT启动#鸿蒙原生应用#及元服务开发。#HarmonyOS#系统的分布式…

【Linux】进程控制深度了解

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟练掌握Linux下的进程控制 > 毒鸡汤&#xff…

【Leetcode】466. 统计重复个数

文章目录 题目思路代码 题目 466. 统计重复个数 思路 题目要求找出一个最大整数 m&#xff0c;使得经过 n2 个字符串 s2 组成的字符串能够被经过 n1 个字符串 s1 组成的字符串完全包含的次数。使用动态规划来记录每个位置匹配的情况&#xff0c;并通过循环节的分析来计算最…

JavaBean

学习目的与要求 熟练掌握<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>等JSP的操作指令。 本章主要内容 编写JavaBean在JSP中使用JavaBean 一个JSP页面通过使用HTML标记为用户显示数据&#xff08;静态部分&#xff09;&#xff0c;页面中变量的…

利用码云(Gitee)与IDEA轻松管理远程代码库的完整指南

目录 前言1 码云简介2 码云上创建远程库3 IDEA集成码云的步骤3.1 安装Gitee插件并建立连接3.2 项目分享到码云3.3 拉取代码 4 码云复制Github4.1 迁移github项目到码云4.2 代码同步 结语 前言 在软件开发领域&#xff0c;代码托管平台是开发者不可或缺的利器。Github作为全球最…

Qt实现文本编辑器(二)

上一章节讲述了如何制作文本编辑页面&#xff0c;以及应该有哪些功能需要实现&#xff0c;只是做了展示效果&#xff0c;实际的点击事件并没有处理。今天来具体讲解下是如何实现菜单栏以及工具栏上对应的需求吧~ 功能实现 功能&#xff1a; 1、动作消息触发 2、具体功能&am…

客户投诉处理常用的ChatGPT通用提示词模板

客户投诉接收&#xff1a;如何接收客户的投诉&#xff0c;并确保信息的准确记录&#xff1f; 投诉分类与优先级排序&#xff1a;如何对投诉进行分类&#xff0c;并确定处理的优先级&#xff1f; 调查与核实&#xff1a;如何对投诉进行调查和核实&#xff0c;了解问题的真实情…

常见安全概念澄清,Java小白入门(八)

认证 认证 (Identification) 是验证当前用户的身份。 常见的认证技术&#xff1a; 身份证用户名和密码用户手机&#xff1a;手机短信、手机二维码扫描、手势密码用户的电子邮箱用户的生物学特征&#xff1a;指纹、语音、眼睛虹膜 授权 授权 (Authorization) 指赋予用户系统…

Linux pwd命令教程:如何查看当前工作目录(附实例教程和注意事项)

Linux pwd命令介绍 pwd命令&#xff08;全称&#xff1a;print working directory&#xff09;是一个非常简单的Linux命令&#xff0c;它的功能就是打印当前工作目录。当你在Linux终端中感到迷失时&#xff0c;pwd命令可以帮助你重新定位&#xff0c;显示你所在的目录。 Linu…

Pointnet++改进:更换不同的激活函数,打造更优性能

简介&#xff1a; 1.该教程提供大量的首发改进的方式&#xff0c;降低上手难度&#xff0c;多种结构改进&#xff0c;助力寻找创新点&#xff01; 2.本篇文章对Pointnet进行激活函数的改进&#xff0c;助力解决RELU激活函数缺陷。 3.专栏持续更新&#xff0c;紧随最新的研究内容…