苦恼于Python运行时感人的速度,我决定学习C++。

为了激励我自己好好地学习这门未曾谋面的编程语言,我决定在此开设专栏:C++学习日记。希望在读者们的监督下,我可以早日掌握这门语言。当然,如果那位大佬愿意赐教,在下也是感激不尽。

2022年7月14日

由于懒得安装编译环境,我找了一个在线编程的网站。接着,我开始寻找教程学习C++(https://www.runoob.com上的教程还不错)。简介、环境设置(我都用在线编辑器了,自然是不需要环境设置的)懒得看,我便从《基本语法》一篇开始循着教程学习(顺带得有点实践,不是吗?)。

首先,是Python中从未谋面的头文件和命名空间:

#include <iostream>
using namespace std;

这能干什么,我真的看不太懂。但我想,既然C++每一个程序中都提及它们,那我们将其牢牢记下,在每个文件开头都照搬一遍似乎就可以。

C++第二个令我不适应之处在于,这里舍弃了缩进,而使用大括号表示语句块。并且,其每一语句结尾的分号也让我头疼。好在在Javascript中我已领教这一情况,因此总算没有激起太大波澜。

不得不说,C++的变量和函数令我感到头大。我们知道,Python的变量不需要指定类型,而在C++中,它需要提前定义,还要设置初始化!更有甚者,连函数的返回值竟也需要指定类型。再加上那看上去毫无意义的变量声明,以及各种复杂不说还带有修饰符的数据类型,我不尽一阵晕眩(还有存储类,那究竟有啥用啊)。

不过,舍弃那些晦涩难懂的用法,我总算是可以安然地设置一些我需要的变量了。

看到讲解运算符时,我不尽嘲笑教程的太过基础。直到……看到名为位运算符的一些操作。说实话,它们并不十分晦涩难懂,但令我置疑的是它的实用性。将一个数拆成二进制数,经过变换后重新转换回十进制——这个操作,我想都不敢想。通过拆解为二进制来解决问题,这根本不是正常能想到的思路。

循环和判断,这些基本的逻辑无疑是一个程序的支柱。也许由于兴趣,这是我今日学得最轻松的部分。这里的for,无疑与Python很不同,更加复杂,应用却更加广泛。do-while结构与goto语句也是给了我们更多发挥的空间——它们可以帮助我们更好地完成一些工作。而判断中的switch语句,也是让我眼前一亮:我曾数次在Python中用if-else来实现此判断,但显然,switch做得更快、更有效(但由于我对C++数据类型实在是使用不惯,还是传统if-else更适合目前的我使用)。

接着,我忍不住跳过大段的内容,转而去学习C++的输入和输出。我一直认为,输入输出乃是一个程序的灵魂,而C++的输入输出无疑是出类拔萃——至少令我满意。可以说,cout<<和cin>>即具有Python中print和input函数的简约(说是胜过Python也不为过),又有一种逻辑上层次分明的美感。

对于函数部分,我只粗略浏览,而匿名函数更是只字未动。这也许是由于这些内容过于繁复,但我认为更多的是海量的知识令我的兴趣渐渐磨灭。也罢,我便停下这第一天的学习,满满消化这些内容。我相信,明日,我将再次信心满满地踏上学习C++的征途。
第一期的C++学习日记到此要告一段落了。最后,一个小小的C++程序作为今日的成果:

#include <iostream>
using namespace std;
int main()
{
for(;;)
{
string digg = "是";
cout<<"您是否会点赞?(回答“是”就行啦!)"<< endl;
cin>>digg;
if(digg=="是")
{
cout<<"万分感谢!"<<endl;
break;
}
else
{
cout<<"请重新回答!"<<endl;
}
}
}

(持续更新中,敬请关注……)

C++学习日记:关于我决定开始学习C++的那些事的更多相关文章

  1. Linux学习日记-使用EF6 Code First(四)

    一.在linux上使用EF 开发环境 VS2013+mono 3.10.0 +EF 6.1.0 先检测一下EF是不是6的 如果不是  请参阅 Linux学习日记-EF6的安装升级(三) 由于我的数据库 ...

  2. android学习日记05--Activity间的跳转Intent实现

    Activity间的跳转 Android中的Activity就是Android应用与用户的接口,所以了解Activity间的跳转还是必要的.在 Android 中,不同的 Activity 实例可能运 ...

  3. android学习日记03--常用控件Dialog

    常用控件 9.Dialog 我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框 对话框,要创建对话框之前首先要创建Bui ...

  4. android学习日记03--常用控件checkbox/radiobutton

    常用控件3.checkbox 复选框,确定是否勾选,点击一下勾选,点击第二下取消,当有一系列备选项时适合用checkbox控件,方便用户提交数据. 贴上例子Activity的java代码 packag ...

  5. android学习日记03--常用控件button/imagebutton

    常用控件 控件是对数据和方法的封装.控件可以有自己的属性和方法.属性是控件数据的简单访问者.方法则是控件的一些简单而可见的功能.所有控件都是继承View类 介绍android原生提供几种常用的控件bu ...

  6. Zend Framework学习日记(2)--HelloWorld篇(转)

    Zend Framework学习日记(2)--HelloWorld篇 这一篇主要演示如何用zf命令行工具建立一个基于Zend Framework框架的工程,也是我初学Zend Framework的小练 ...

  7. Zend Framework学习日记(1)--环境搭建篇(转)

    Zend Framework学习日记(1)--环境搭建篇 (1)开发工具 Zend Framework框架:http://framework.zend.com/download/latest 包含2个 ...

  8. Python 学习日记(第三周)

    知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...

  9. 配置ssh免密码登录——集群学习日记

    度过了难熬的考试月时期之后,最近和小伙伴一起参加的的比赛进入了紧张的准备时期.在进行工作的时候,发现有很多基础的知识点,自己不是很清楚以及了解,所以在想,要不就边学习的时候边写下学习日记,以供自己后来 ...

  10. Hadoop-2.7.2集群的搭建——集群学习日记

    前言 因为比赛的限制是使用Hadoop2.7.2,估在此文章下面的也是使用Hadoop2.7.2,具体下载地址为Hadoop2.7.2 开始的准备 目前在我的实验室上有三台Linux主机,因为需要参加 ...

随机推荐

  1. Java 18 新特性:使用Java代码启动jwebserver

    前几天分享了Java 18 新特性:简单Web服务器的jwebserver命令行功能. 今天换一种方式,使用Java代码来实现一个静态资源服务器. 详细步骤我录了个视频放到B站了,感兴趣的小伙伴可以点 ...

  2. DBSCAN算法概念【聚类】

    不用设值K个簇的值 需要设置两个值:minPts和半径r的值 可视化展示 核心对象,传销组织头头 传销方式发展下线,在某一个子组织内,一个不是首领的人没有任何下线,就称这个人为''边界点'' 圈圈圈圈 ...

  3. ucore lab4 内核线程管理 学习笔记

    越学越简单,真是越学越简单啊 看视频的时候着实被那复杂的函数调用图吓到了.看代码的时候发现条理还是很清晰的,远没有没想象的那么复杂. 这节创建了俩内核线程,然后运行第一个线程,再由第一个切换到第二个. ...

  4. 深度解析javaScript常见数据类型检查校验

    前言 在JavaScript中,数据类型分为两大类,一种是基础数据类型,另一种则是复杂数据类型,又叫引用数据类型 基础数据类型:数字Number 字符串String 布尔Boolean Null Un ...

  5. JS/JQ动画效果

    1.弹出框 <style> .mask { position: fixed; display: none; width: 100%; height: 100%; top: 0; left: ...

  6. 1.Docker简介

    Docker是个什么东西 假定您在开发一个项目,您使用的是一台笔记本电脑而且您的开发环境具有特定的配置.其他开发人员身处的环境配置也各有不同.您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件 ...

  7. 从NSSRound#1学到了什么

    sql_by_sql 二次注入: 更改密码的功能形如: update user set password='%s' where username='%s'; 的语句就可以存在二次注入,即假设有个adm ...

  8. mysql5.7介绍和安装

    环境准备: 1.关闭防火墙和selinux systemctl stop firewalldsystemctl stop SElinux 2. 如果安装过mariadb需要停止且卸载服务 system ...

  9. 1.0 vue开篇之作

    vue官网链接:https://cn.vuejs.org/ 一. vue简介 vue目前分为2.X版和3.X版,本文以2.X版为准,后续会更新3.X版本相关教程,建议从2.X版开始学起,因为此版本经过 ...

  10. 11┃音视频直播系统之 WebRTC 进行文本聊天并实时传输文件

    一.RTCDataChannel WebRTC 不但可以让你进行音视频通话,而且还可以用它传输普通的二进制数据,比如说可以利用它实现文本聊天.文件的传输等 WebRTC 的数据通道(RTCDataCh ...