i++和++i有区别吗?

arcit666 2006-08-25 04:01:08
在循环中,for (int i = 0; i < 5; i++)
i++和++i有区别吗?
...全文
5304 46 打赏 收藏 转发到动态 举报
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
tormtee 2006-08-26
  • 打赏
  • 举报
回复
(i++)是先计算后加,一个(++i)是先加后计算
贵子潘 2006-08-26
  • 打赏
  • 举报
回复
for (int i = 0; i < 5; i++)
在这个循环中,结果没什么区别,都一样
意思是说,如果i++,++i是作为一个单独的语句,结果是一样的,虽然他们的增长方式不一样
bdbox@qq.com 2006-08-26
  • 打赏
  • 举报
回复
我晕~·!为什么一定要用i++或++i。如果遇到这样的问题,用我们最容易理解的方式就行了!我认为。呵呵~不过多了解一点知识还是有必要的。
Cicinho 2006-08-26
  • 打赏
  • 举报
回复
前面的高手们都说了两者使用的区别,我在此不重复了,说说其他的吧。
两者在循环中用起来结果没有什么区别,但是++i比i++的效率高点。
为什么i++效率高,是因为:
后置operator++是通过前置的operator++实现的,而且后置operator++实现函数里会定义一个用来返回++前的值。

另外,对此操作符重载分为两种情况:
operator ++()和operator ++(int)
前者对前置++的重载,后者对后置++的重载。
daishengs 2006-08-26
  • 打赏
  • 举报
回复
啊,我本来也想回答结果是一样的,没有区别.
看了一下楼下的,测试一下先,如果是真的,那谢谢楼上山村贞子啦的啦.
ShanChunZhenZi 2006-08-26
  • 打赏
  • 举报
回复
在 for (int i = 0; i < 5; i++) 中 ++i 和 i++

是绝对的有区别:1、效率; 2、++i 、i++ 表达式的值类型的区别(前者为左值,后者为右值)
,我做了个简单的实验,如下:

#include <ctime>
#include <iostream>

using namespace std;


int main(int argc, char *argv[])
{
long count = 0;
for(long a=0; a != 1000000; ++a)
for(long b=0; b != 100000; ++b)
;
count = clock() / CLOCKS_PER_SEC;
printf("count = %d", count);

system("PAUSE");
return EXIT_SUCCESS;
}

我的系统是Athron XP2500+ 256MB 内存(大家不要笑我,我没钱买内存做双通道),上面的实验在 Dev C++ 4.9.9.2 上运行通过, 经多次实验,第一种情况就是 ++a , ++b ,结果是300秒左右;第二种情况是 a++ , b++ , 结果是370秒左右,循环次数是一样的,就是因为 ++ 在前或在后的区别,运行效率相差70秒左右,70秒啊! 对计算机来说能做多少事了,这个效率问题是非常明显的了,要是循环次数再加大,那这个差距会更大。从大家回答这个问题就可以看出中国的大学教育没水平,竟说这两种情况没并别,外国人看了会笑我们的……
okie-dokie 2006-08-26
  • 打赏
  • 举报
回复
当有 一个是先加(++i)一个是后加(i++)

for (int i = 0; i < 5; i++)

i++ 或者 ++i 都是表达式,i是变量


yanro 2006-08-26
  • 打赏
  • 举报
回复
一个(i++)是先计算后加,一个(++i)是先加后计算.
--------------------------------------------
例如:
i=4;
a=i++; //a=4
i=4;
a=++i; //a=5
simao21 2006-08-26
  • 打赏
  • 举报
回复
一个(i++)是先计算后加,一个(++i)是先加后计算.


在C语言里学过的。基础要打好。
AaronLuo 2006-08-25
  • 打赏
  • 举报
回复
没区别
lixuefei 2006-08-25
  • 打赏
  • 举报
回复
多数人以为自己知道,其实没看过C++Primer的人都不知道。
lwj_wx 2006-08-25
  • 打赏
  • 举报
回复
自增自减其实就是要把握一个前提就够了!
____当自增变量在语句结束前i++的值不自增,++i自增,
____当变量在语句结束后二者没区别
当然for循环中也在条件中了!
zftow110 2006-08-25
  • 打赏
  • 举报
回复
费话,地球人都知道!
featbobo 2006-08-25
  • 打赏
  • 举报
回复
单独使用没区别
在表达式中有区别~~
renmasheshou 2006-08-25
  • 打赏
  • 举报
回复
楼主学过C语言吗???
billmo1986 2006-08-25
  • 打赏
  • 举报
回复
循环中好像没太多差别的
ShanChunZhenZi 2006-08-25
  • 打赏
  • 举报
回复
当然有区别: 效率与表达式值类型的区别

1、++i 的效率确实比 i++ 的要高,如果要执行多次的循环,这个效率问题是显然的。因为对 ++i 来说,整个表达式的值就是 i 的值,没有进行中间值的考贝工作,所以效率高;而对于 i++ 来说,整个表达式的值是 i 增1之前的值,它会考贝一份 i 增 1 之前的值作为整个表达式的值,所以效率低。

2、++i 这个表达式产生的是一个左值,可以把这个表达式用在一个需要一个左值的地方,如赋值表达式的左边:++i = 8; 而 i++ 产生的是一个右值,不能用在一个需要左值的地方。
ShanChunZhenZi 2006-08-25
  • 打赏
  • 举报
回复
当然有区别:

1、++i的效率确实比i++的要高,因为对++i来说,整个表达式的值就是i的值,没有进行中间值的考贝工作,所以效率高;而对于i++来说,整个表达式的值是i增1之前的值,它会考贝一份i增1之前的值作为整个表达式的值,所以效率低。

2、++i这个表达式产生的是一个左值,可以把这个表达式用在一个需要一个左值的地方,如赋值表达式的左边:++i = 8; 而i++产生的是一个右值,不能用在一个需要左值的地方。
yanyunana 2006-08-25
  • 打赏
  • 举报
回复
有区别,那就是,i++比++i的执行效率要低,建议使用++i;因为i++要使用一临时变量保存先前i的值,具体解释可以翻看<<c++ primer >>第四版,具体哪一页忘记了
hwb_net 2006-08-25
  • 打赏
  • 举报
回复
顶,楼顶正解
加载更多回复(24)
一、prometheus简介 Prometheus是一个开源的系统监控和告警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF维护管理的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,prometheus支持多种exporter采集数据,还支持通过pushgateway进行数据上报,Prometheus再性能上可支撑上万台规模的集群。 二、prometheus架构图 三、prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据。 2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。 3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端 4.Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。 5.Grafana:监控仪表盘 6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。 四、课程亮点 五、效果图展示 六、讲师简介 先超(lucky):高级运维工程师、资深DevOps工程师,在互联网上市公司拥有多年一线运维经验,主导过亿级pv项目的架构设计和运维工作 主要研究方向: 1.云计算方向:容器 (kubernetes、docker),虚拟化(kvm、Vmware vSphere),微服务(istio),PaaS(openshift),IaaS(openstack)等2.系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等 七、课程大纲

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧