C++学习日记:关于我决定开始学习C++的那些事
苦恼于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++的那些事的更多相关文章
- Linux学习日记-使用EF6 Code First(四)
一.在linux上使用EF 开发环境 VS2013+mono 3.10.0 +EF 6.1.0 先检测一下EF是不是6的 如果不是 请参阅 Linux学习日记-EF6的安装升级(三) 由于我的数据库 ...
- android学习日记05--Activity间的跳转Intent实现
Activity间的跳转 Android中的Activity就是Android应用与用户的接口,所以了解Activity间的跳转还是必要的.在 Android 中,不同的 Activity 实例可能运 ...
- android学习日记03--常用控件Dialog
常用控件 9.Dialog 我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框 对话框,要创建对话框之前首先要创建Bui ...
- android学习日记03--常用控件checkbox/radiobutton
常用控件3.checkbox 复选框,确定是否勾选,点击一下勾选,点击第二下取消,当有一系列备选项时适合用checkbox控件,方便用户提交数据. 贴上例子Activity的java代码 packag ...
- android学习日记03--常用控件button/imagebutton
常用控件 控件是对数据和方法的封装.控件可以有自己的属性和方法.属性是控件数据的简单访问者.方法则是控件的一些简单而可见的功能.所有控件都是继承View类 介绍android原生提供几种常用的控件bu ...
- Zend Framework学习日记(2)--HelloWorld篇(转)
Zend Framework学习日记(2)--HelloWorld篇 这一篇主要演示如何用zf命令行工具建立一个基于Zend Framework框架的工程,也是我初学Zend Framework的小练 ...
- Zend Framework学习日记(1)--环境搭建篇(转)
Zend Framework学习日记(1)--环境搭建篇 (1)开发工具 Zend Framework框架:http://framework.zend.com/download/latest 包含2个 ...
- Python 学习日记(第三周)
知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...
- 配置ssh免密码登录——集群学习日记
度过了难熬的考试月时期之后,最近和小伙伴一起参加的的比赛进入了紧张的准备时期.在进行工作的时候,发现有很多基础的知识点,自己不是很清楚以及了解,所以在想,要不就边学习的时候边写下学习日记,以供自己后来 ...
- Hadoop-2.7.2集群的搭建——集群学习日记
前言 因为比赛的限制是使用Hadoop2.7.2,估在此文章下面的也是使用Hadoop2.7.2,具体下载地址为Hadoop2.7.2 开始的准备 目前在我的实验室上有三台Linux主机,因为需要参加 ...
随机推荐
- FreeRTOS --(6)内存管理 heap5
转载自https://blog.csdn.net/zhoutaopower/article/details/106748308 FreeRTOS 中的 heap 5 内存管理,相对于 heap 4&l ...
- Go Context 原理详解
实现一个小目标 很开心的一件事,学习了一个月的后端拿到一个13k的offer,今年年底目标拿到一个30k的go方向offer. 好了回归正文,这篇文章是回答交流时一个老哥的问题,跟go的context ...
- Git在项目中使用技巧
1.常用的命令 mkdir 文件夹名 创建文件夹 clear 清楚屏幕 ls或者ll 将当前目录下的子文件和子目录平铺在控制台 find 目录名 将对应目录下的子孙文件或子孙目录平铺在控制台 rm 文 ...
- this-4
ES6函数里的this指的是定义这个函数时外层代码的this,可以理解为:1.ES6箭头函数没有自己的this:2.ES6箭头函数的this是外层代码(定义时,非执行时,也就是词法作用域)this的引 ...
- 手脱无名壳tslgame_rl
1.使用Detect It Easy查壳,该壳未显示出壳信息,至于为何有壳,我们使用IDA打开,查看其的导入表,其中没有太多函数使用: 2.我们使用x32dbg打开,运行至入口点,此处没有pushad ...
- DDoS攻击--TCP攻击概述
https://blog.csdn.net/qq_34777600/article/details/81945594
- php魔术方法小结
php魔术方法 __construct() __construct(mixed ...$values = ""): void PHP 允许开发者在一个类中定义一个方法作为构造函数. ...
- OpenStack 安装 Keystone
OpenStack 安装 Keystone 本篇主要记录一下 如何安装 openstack的 第一个组件 keystone 认证授权组件 openstack 版本 我选的是queens 版本 1.Op ...
- 使用echo 无法正确清空文件存储大小
在使用echo进行重定向文件的时候,会存在大小没有发生改变的现象 使用上面的方法遇到一个现象 ls -l 与 du -sh 得到的大小事是不同的 可以尝试下面的方面之后在进行对比 再看是否正确清除 使 ...
- Springboot启动类及注解说明
Spring boot的启动是基于main方法的,其主要注解为: 1. @springBootApplication:项目的启动注解,是一个组合注解,包含@SpringbootConfiguratio ...