- 博客(8)
- 收藏
- 关注
原创 编写C语言计算器:探索挑战与优化之路
*一个最容易想到的方法是,在if语句中套用选择语句来判断(即双层if),但是这样又时代码逻辑变得不清晰起来了,这显然违背了我们的初衷。这时我们发现,如果未来想要扩充这个计算器的功能,比如增加%,>, & , | , ^ 等功能,应该如何修正代码呢?通过本文的学习,我们深入了解了用C语言实现简易计算器的过程,并探讨了在这个过程中遇到的一些常见问题及其解决方案。while的框架,我相信读者都已经比较熟悉了,如果还不熟悉的,可以去看看我之前的一篇关于。这下应该就理清楚它们之间的关系了把。
2024-05-23 18:08:14 1360 1
原创 整型类型提升的2种解读
C语⾔中整型算术运算总是⾄少以缺省(默认)整型类型的精度来进⾏的。为了获得这个精度,表达式中的字符和短整型操作数在使⽤之前被转换为普通整型,这种转换称为整型提升。(比如:short + char ------->int + int )表达式的整型运算要在CPU的相应运算器件内执⾏,CPU内整型运算器(ALU)的操作数的字节⻓度⼀般就是int的字节⻓度,同时也是CPU的通⽤寄存器的⻓度。因此,即使两个char类型的相加,在CPU执⾏时实际上也要先转换为CPU内整型操作数的标准⻓度。
2024-05-21 13:49:29 525 1
原创 函数栈帧解密:拆解底层内存管理的复杂过程
通过上图,我们可以了解到,栈区主要存放局部变量和函数参数,那么,在函数调用过程中,我们主要都是在栈区开辟空间,如果栈区被开辟完了(一直调用函数,而没有释放空间),那么就会栈溢出。那么,栈区的开辟具体过程是怎样的呢?
2024-05-19 10:50:48 1367
原创 提升性能的奥秘:C语言中两种不同算法解决阶乘求和问题
分析:为了完成阶乘的求和,我们首先需要产生阶乘数,**那我们如何产生阶乘数( 即n!)呢?不难看出,循环结束后的ret即为n!好,现在我们已经产生了n!意味着随着n的变化,将会产生1!,2!,3!。。。。。。最后将它们累加起来就完成本题的结果。此处的n就需要从1一直变化到9,**那我们如何产生1~9的数呢?可以看到,这个解法,用了两层循环,第一层产生n(1~9),第二层求n!时间复杂度为O(n^2),并非是个优秀的解法。我们发现,第二层函数求n时,每次都是从1开始累乘,此处能否可以进行优化呢?
2024-05-16 21:39:47 133
原创 从零开始:C语言编写扫雷游戏的逻辑详解
这是经典的扫雷界面,我相信对于大多数小伙伴们小时候都或多或少玩过,听过这款游戏吧,在实现这个游戏之前,我们先来简单玩两把哦。
2024-05-16 17:31:04 417
原创 20行代码-关机小程序-千万别“坑”同学!
windows中关机指令的设置是用shutdown这个系统命令来实现的,表示倒计时60s后关机,我们可以打开控制台验证一下,如图:然后输入_shutdown -s -t 60_这个系统命令敲回车后可以看到,windows提示60s后将自动关机,当然,你也可以修改任意的倒计时时间(有小伙伴可能会把它设置成1秒,嘿嘿,那可就不一定来得及取消关机了哦),那我们应该怎么取消关机呢?
2024-05-15 19:36:13 510
原创 c语言实现-猜数字-游戏
上面switch旁注释提到,变量的情况“有限且离散”用switch合适。和switch该怎么选择呢?上面提到,要设置随机数种子,我们c语言中,利用srand()来设置种子,并且只需要在程序一开始设置一次就好了。好,回到本主题,接下里我们现在需要完善switch语句的case1,case0,default。可以看到,当变量的情况是“范围”时,用if…
2024-05-14 20:47:59 188 4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人