c语言定义禁止优化变量,C语言优化小技巧-程序员宅基地

技术标签: c语言定义禁止优化变量  

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

在编写C语言程序后,经常需要对源码进行优化,以提高程序的运行效率,下面简述几个常用的优化技巧以供大家参考:

1.C于代码在程序中的优化

现在的C编译器会自动对代码进行优化,但这些优化是对执行速度和代码长度的平衡。如果要获得更小且执行效率更高的代码,需要程序员手工对代码进行优化。

2.变量类型的定义

不同的数据类型所生成的机器代码长度相差很多,变量类型选取的范围越小运行速度越快,占用的内存越少。能够使用char(字符型)定义的变量,就不要使用整型(int)变量定义;能够使用整型变量定义的变量就不要用长整型(long int),能不使用浮点(float)变量就不要使用浮点型(double)变量。

相同类型的数据类型,有无符号对机器代码长度也有影响。因此我们应按照实际需要合理的选用数据类型。当然,在定义变量后不要超过变量的作用范围,如果超过变量的范围赋值,C编译器并不报错,但程序运行结果却错了,而且这样的错误很难发现。

3.提高循环语言的效率

在 C 语言中循环语句使用频繁,提高循环体效率的基本办法就是降低循环体的复杂性。在多重循环中,应将最长的循环放在最内层,最短的循环放在最外层。这样可以减少 CPU跨切循环的次数。如例 1-1 的效率比 1-2 的效率要高:

int i,j;

for (i = 0; i < 10; i++)

{

for (j = 0; j < 20; j++)

{

... ...

}

} // 例子 1-1

for (j = 0; j < 20; j++)

{

for (i = 0; i < 10; i++)

{

... ...

}

} // 例子 1-2

4.采用数学方法优化程序

数学是计算机之母,没有数学的依据和基础,就没有计算机的发展,所以在编写程序的时候,采用一些数学算法会对程序的执行效率有数量级的提高。有时候这个问题常常被大家忽略, 对于没有经验的程序员来说更是如此。例如:求 1到100的自然数和sum = 100*(100+1)/2; 数学公式. (n +1)*n/2。

优化算法和数据结构对提高代码的效率有很大的帮助。当然有时候时间效率和空间效率是对立的,此时应分析哪个更重要,做出适当的折中。另外,在进行优化的时候不要片面的追求紧凑的代码,因为紧凑的代码并不能产生高效率的机器码。

当然代码优化的方法还有很多,这里只是简单列举几个例子,希望能为初学者提供一些帮助。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42526484/article/details/117074306

智能推荐

mysql 中 group by 与 order by 的顺序_group by order by顺序-程序员宅基地

文章浏览阅读1.7w次,点赞4次,收藏11次。mysql 中order by 与group by的顺序 是:selectfromwheregroup byorder by注意:group by 比order by先执行,order by不会对group by 内部进行排序,如果group by后只有一条记录,那么order by 将无效。要查出group by中最大的或最小的某一字段使用 max或min函数。例:select sum(click_num) as totalnum,max(update_time) as up._group by order by顺序

【coocs2d-x 3.5】Lua 精灵触摸_coocs 2dx-lua 点击获取精灵-程序员宅基地

文章浏览阅读1k次。local function onTouchBegan(touch, event) local s = map[1][1]:getSprite():getContentSize() local px = map[1][1]:getSprite():getPositionX() local py = map[1][1]:getSprite():getPositionY()_coocs 2dx-lua 点击获取精灵

如何用Java将DWG和DXF文件转换为PDF?看了这篇就懂了_java kabeja.batik 将dxf文件转换成pdf,并设置宽高-程序员宅基地

文章浏览阅读2k次。CAD文件格式是设计师或建筑师在建筑、汽车、五金等各行各业制作图纸时使用的。DWG和DXF是最广泛使用的CAD格式,然而,你需要一个专门的软件来查看DWG和DXF文件中的内容。为了解决这个限制,你可以将CAD图纸转换为PDF格式。Aspose.CAD是一个独立的AutoCAD处理API。它提供将DWG,DWF和DXF文件转换为高质量PDF和光栅图像的功能。开发人员可以从AutoCAD文件中选择和转换特定的布局和图层,并轻松跟踪整个文件转换过程。在本文中,将学习如何自动将CAD转换为PDF,并使用Ja_java kabeja.batik 将dxf文件转换成pdf,并设置宽高

关于腾讯云服务器不能用公网ip访问的解决方案-程序员宅基地

文章浏览阅读9.4k次。最近在腾讯云服务器上部署Javaweb项目,开始外网ip是可以访问到云服务器上的项目的,我重启了一下Tomcat之后发现端口号8080无法使用,此时的公网ip还是可以使用的,然后我重启了一下云服务器之后连公网ip都无法访问了,然后百度了一下,解决办法是在云服务器控制面板中找到安全组把对应所需要的端口号开放了,还有说把防火墙关了,这两种办法有点是可以解决问题的,但是我都试了解决不了,设置安全组如图所

关于uni-app中的安全区域以及动态设置标题_uniapp 安全区域-程序员宅基地

文章浏览阅读420次,点赞11次,收藏5次。获取屏幕边界到安全区的距离。_uniapp 安全区域

[已解决] wget命令出现Unable to establish SSL connection.错误_linux在测试dashboard服务时出现unable to establish connecti-程序员宅基地

文章浏览阅读204次。从win11上下载best.ckpt包时。加上跳过验证证书的参数。_linux在测试dashboard服务时出现unable to establish connection to keystone end

随便推点

【Lintcode】1302. People Counting_3d people counting-程序员宅基地

文章浏览阅读168次。题目地址:https://www.lintcode.com/problem/people-counting/description给定一个数组AAA,再给定一组询问,问每个数在AAA中出现了多少次。直接用哈希表计数。代码如下:import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Solution { /** * _3d people counting

Windows必备软件_qttabbar中文包-程序员宅基地

文章浏览阅读277次。1.谷歌浏览器(见我的另一篇文章,对浏览器下载安装有详细的介绍):谷歌浏览器2.中文PotPlayer播放器(功能最全的播放器):PotPlayer官网(需要科学上网):;亲测可用(安装时,语言选择简体中文即可,里面还有旧版本的potplayer)需要从诚通网盘下载(类似易破解)3.虚拟机:官网Vmware-Workstation(需要登录);第七下载(亲测可用,安装时并无捆绑软件..._qttabbar中文包

vscode出现“若您正以管理员身份运行 Visual Studio Code 用户范围的安装,更新功能会被禁用。”怎么办?_若您正以管理员身份运行 visual studio code 用户范围的安装,更新功能会被禁用。-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏2次。记得选择win下面的System Installer x64而不是User Installer。_若您正以管理员身份运行 visual studio code 用户范围的安装,更新功能会被禁用。

mysql xtrabackup 使用说明_xtrabackup: no valid checkpoint found.-程序员宅基地

文章浏览阅读1.1k次。mysql xtrabackup 使用说明_xtrabackup: no valid checkpoint found.

直线插补法的程序实现(python)_直线插补xoy-程序员宅基地

文章浏览阅读3.9k次,点赞3次,收藏20次。直线插补法的程序实现(python)本次程序实现采用python的海龟绘图法来进行图像的直观描述海龟绘图法简单易懂,而且由python自带,无需下载代码实现import turtle'''初始化坐标系'''t = turtle.Pen()t.goto(0,0)t.goto(-200,0)t.goto(200,0)t.goto(0,0)t.goto(0,200)t.goto..._直线插补xoy

dos 自己常用批处理bat_bat批处理 自己-程序员宅基地

文章浏览阅读587次。最无奈的是每天上班必须启动一系列的应用,干脆自己就搞一个批处理,不用每次都看图标然后再去双击跑起来有兴趣的可以看看,不喜勿喷!!!谢谢@echo off@echo "runing is success ..."goto input@pause:input @set /p order=please input you order: goto %order% ..._bat批处理 自己

推荐文章

热门文章

相关标签