苦恼于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;
}
}
}

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

最新文章

  1. VI操作命令
  2. Code Review 五问五答
  3. Android学习系列(40)--Android主题和样式之系统篇(下)
  4. 加载gif动态图的三种方式
  5. (四)JAVA使用POI操作excel
  6. G - 密码 kmp、贪心、manachar等等等等
  7. 不是什么时候都可以用栈来声明对象并使用(自动释放)——Delphi里到处都是编译器魔法,并且自动帮助实例化界面元素指针
  8. uva 11400 Problem F Lighting System Design
  9. elasticsearch的rest搜索---mapping
  10. jQuery.cssHooks
  11. Bootstrap3写的红色警告框样式组件
  12. 1232: [Usaco2008Nov]安慰奶牛cheer
  13. .Net Core实现将文件上传到七牛云存储
  14. Go执行远程ssh命令
  15. Android水印相机
  16. thinkphp 在本地正常,在云端ubuntu下报控制器不存在
  17. ER模型试题
  18. [adminitrative][archlinux][setfont] 设置console的字体大小
  19. python selenium中等待元素出现及等待元素消失操作
  20. SEL_CallFuncN,SEL_CallFuncO等的区别

热门文章

  1. 解决vue安装less报错Failed to compile with 1 errors的问题
  2. pyqt5 重启相同线程错误:QThread: Destroyed while thread is still running
  3. 【openstack】cloudkitty组件,入门级安装(快速)
  4. 团队Arpha1
  5. CSS加载不会阻塞DOM树解析
  6. (原创)[C#] MEF 主程序与插件加载不同版本的DLL
  7. 论文解读(GCC)《GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training》
  8. Thymeleaf 公共css,js提取及自有css,js导入
  9. SmartIDE v0.1.18 已经发布 - 助力阿里国产IDE OpenSumi 插件安装提速10倍、Dapr和Jupyter支持、CLI k8s支持
  10. Django虚拟环境详解