在循环内部定义变量与在循环外部定义变量,两者的时间与空间复杂度如何?

代码1:inttemp;intj;intsum=0;for(inti=0;i<1000000;++i){temp=0;for(j=0;j<1000000;++j)++te... 代码1:

int temp;
int j;
int sum = 0;

for(int i = 0; i < 1000000; ++i)
{
temp = 0;

for(j = 0; j < 1000000; ++j)
++temp;

sum += temp;
}

代码2:
int sum = 0;

for(int i = 0; i < 1000000; ++i)
{
int temp = 0;

for(int j = 0; j < 1000000; ++j)
++temp;

sum += temp;
}

两个哪个运行更快呢,为什么?
展开
 我来答
百度网友79d5913
2016-11-28 · TA获得超过2245个赞
知道大有可为答主
回答量:1325
采纳率:83%
帮助的人:277万
展开全部
首先,变量的声明是在栈中进行的,而实例化则是在堆中,故栈中只有基础数据与实例的引用。
故上面程序的不同点:
1、在外面的定义的变量,只在栈中声明了一次。
2、在里面的定义的变量,循环多少次就在栈中声明了多少次。
3、在内存或说资源节省方面,肯定是在外面定义较好,是摧荐的写法;但是如果循环数不大,其实也者体现出来的差别也不大。
4、由于实例化的对象都在堆中,故个人认为以上两个基本一样。

在循环次数不多的情况下,差不多。
但如果循环次数非常大,那肯定是在外面定义变量来的更快了。因为少了每次循环入栈出栈的操作消耗。
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
William_2014
2016-11-28 · TA获得超过173个赞
知道小有建树答主
回答量:170
采纳率:100%
帮助的人:96.4万
展开全部
第一个快,第二个要定义变量和释放内存,第一个只是变量循环赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BlueWanderer
2016-11-28 · TA获得超过9209个赞
知道大有可为答主
回答量:5673
采纳率:83%
帮助的人:2016万
展开全部
一般情况下,除了变量位置不同以外不会有任何区别。

进入函数的时候会给所有局部变量预留空间(不会同时使用的变量会共享空间),函数结束的时候整体释放。并不是在定义变量的位置申请,用完了就释放的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
科技艺术生活
2016-11-28 · TA获得超过265个赞
知道小有建树答主
回答量:328
采纳率:100%
帮助的人:151万
展开全部
第一个快吧,
因为第一个,内存在外面,第二个,用汇编来看指令,需要分解,为,定义寄存器,赋值,改,收回寄存器,第一个,就不需要了啊,,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式