当前位置: 首页 > news >正文

阳山网站建设百度产品大全首页

阳山网站建设,百度产品大全首页,一般淘宝网站做几个月赚钱,宣武成都网站建设简介 先说i和i的区别&#xff0c;判断语句中if(i)是拿i的值先判断&#xff0c;而后自增&#xff1b;if(i)是先自增i再进行判断。涉及到左值与右值也有点区别&#xff0c;i返回的是右值&#xff0c;i返回的是左值。也就是下面的代码要解释的东西。 #include <iostream>i…

简介

先说++ii++的区别,判断语句中if(i++)是拿i的值先判断,而后自增;if(++i)是先自增i再进行判断。涉及到左值与右值也有点区别,i++返回的是右值,++i返回的是左值。也就是下面的代码要解释的东西。

#include <iostream>int main()
{//后置自增,返回右值int i = 0;auto pi = &(i++); 错误 右值无法取地址//前置自增,返回左值int j = 0;auto pj = &(++j);// 正确std::cout << "Hello World!\n";
}

转折

老生常谈的经验是++ii++性能好,因为++i中间会产生临时变量,参考这篇文章的解释http://t.csdn.cn/2A7PT。实际上较新的编译器,简单的自增没有差别了。我们看下汇编代码:

int i = 0;
00007FF73AD21C9B  mov         dword ptr [i],0  i++;
00007FF73AD21CA2  mov         eax,dword ptr [i]  
00007FF73AD21CA5  inc         eax  
00007FF73AD21CA7  mov         dword ptr [i],eax  int j = 0;
00007FF73AD21CAA  mov         dword ptr [j],0  ++j;
00007FF73AD21CB1  mov         eax,dword ptr [j]  
00007FF73AD21CB4  inc         eax  
00007FF73AD21CB6  mov         dword ptr [j],eax  

i++++j的汇编代码一模一样,基本不涉及临时变量。

我们加上if进行观察:

    int i = 0;
00007FF7BEB91C9B  mov         dword ptr [i],0  if (i++)
00007FF7BEB91CA2  mov         eax,dword ptr [i]  
00007FF7BEB91CA5  mov         dword ptr [rbp+0F4h],eax  
00007FF7BEB91CAB  mov         eax,dword ptr [i]  
00007FF7BEB91CAE  inc         eax  
00007FF7BEB91CB0  mov         dword ptr [i],eax  {}//前置自增,返回左值int j = 0;
00007FF7BEB91CB3  mov         dword ptr [j],0  if (++j)
00007FF7BEB91CBA  mov         eax,dword ptr [j]  
00007FF7BEB91CBD  inc         eax  
00007FF7BEB91CBF  mov         dword ptr [j],eax  {}

注意:00007FF7BEB91CA5 mov dword ptr [rbp+0F4h],eax 这行代码是把i++前的值拷贝到临时变量了,临时变量的地址是rbp+0F4h。而后才对i进行自增操作。

总结

也就是说编译器优化仅对简单的自增进行了优化,但是复杂的,甚至仅仅是套了一层if,编译器是不会优化的,因为要兼容已有的代码。如果if里面的也做优化,则之前那么多的程序岂不是要炸了💣?也就是语义上要保持连贯性,已经形成共识的东西编译器是会传承下去的。

再一个也是不理解既然汇编语言i++++i都一样,为什么&i++还是会报无法对右值取地址,其实也是编译器对这种复杂点的语句,不会对前置自增后置自增进行优化,生成汇编代码的时候还是对右值取的地址,导致的报错。


文章转载自:
http://dinncotracheobronchial.bpmz.cn
http://dinncorhododendra.bpmz.cn
http://dinncosheena.bpmz.cn
http://dinncosamnite.bpmz.cn
http://dinncoformfitting.bpmz.cn
http://dinncowheelhouse.bpmz.cn
http://dinncogeordie.bpmz.cn
http://dinncoreflectional.bpmz.cn
http://dinncomalimprinted.bpmz.cn
http://dinncomoldboard.bpmz.cn
http://dinncogele.bpmz.cn
http://dinncocrackers.bpmz.cn
http://dinncoconsubstantial.bpmz.cn
http://dinncobermudan.bpmz.cn
http://dinncopiquada.bpmz.cn
http://dinncocollarette.bpmz.cn
http://dinncoautosomal.bpmz.cn
http://dinncograzier.bpmz.cn
http://dinncospillikin.bpmz.cn
http://dinncorest.bpmz.cn
http://dinncorussenorsk.bpmz.cn
http://dinncopicotee.bpmz.cn
http://dinncomacroetch.bpmz.cn
http://dinncometaphorist.bpmz.cn
http://dinncopullulate.bpmz.cn
http://dinncodissymmetry.bpmz.cn
http://dinncomanu.bpmz.cn
http://dinncosolebar.bpmz.cn
http://dinncochainlet.bpmz.cn
http://dinncosuckerfish.bpmz.cn
http://dinncolessness.bpmz.cn
http://dinncoloxodromy.bpmz.cn
http://dinncoquarantinable.bpmz.cn
http://dinncoparasitic.bpmz.cn
http://dinncohectolitre.bpmz.cn
http://dinncosandblast.bpmz.cn
http://dinncotoxicologically.bpmz.cn
http://dinncospeaker.bpmz.cn
http://dinncotelepathically.bpmz.cn
http://dinncopantheistic.bpmz.cn
http://dinncohydrowire.bpmz.cn
http://dinncoindividually.bpmz.cn
http://dinncoteniacide.bpmz.cn
http://dinncosincere.bpmz.cn
http://dinncopatio.bpmz.cn
http://dinncositrep.bpmz.cn
http://dinncorifely.bpmz.cn
http://dinncoalcor.bpmz.cn
http://dinncopartaker.bpmz.cn
http://dinncotrapezohedron.bpmz.cn
http://dinncopndb.bpmz.cn
http://dinnconomenclatorial.bpmz.cn
http://dinncokomiteh.bpmz.cn
http://dinncogelatinize.bpmz.cn
http://dinncoalpestrine.bpmz.cn
http://dinncojoycean.bpmz.cn
http://dinncountidy.bpmz.cn
http://dinncoheptane.bpmz.cn
http://dinncocolacobiosis.bpmz.cn
http://dinncofermium.bpmz.cn
http://dinncosociocracy.bpmz.cn
http://dinncodisapprobation.bpmz.cn
http://dinncoviviparous.bpmz.cn
http://dinncoclotted.bpmz.cn
http://dinncoadipose.bpmz.cn
http://dinncomesenteron.bpmz.cn
http://dinncopilum.bpmz.cn
http://dinncocontrite.bpmz.cn
http://dinncolabilize.bpmz.cn
http://dinncotshi.bpmz.cn
http://dinncomephisto.bpmz.cn
http://dinncoconfidently.bpmz.cn
http://dinncomegalopolis.bpmz.cn
http://dinncoetorphine.bpmz.cn
http://dinncolockpick.bpmz.cn
http://dinncoweir.bpmz.cn
http://dinncocatastrophist.bpmz.cn
http://dinncobaitandswitch.bpmz.cn
http://dinncohodgepodge.bpmz.cn
http://dinncovisking.bpmz.cn
http://dinncoclassify.bpmz.cn
http://dinncoknucklejoint.bpmz.cn
http://dinncobaronage.bpmz.cn
http://dinncotoon.bpmz.cn
http://dinncoshaggymane.bpmz.cn
http://dinncotympanal.bpmz.cn
http://dinncocourante.bpmz.cn
http://dinncodogginess.bpmz.cn
http://dinncodisbar.bpmz.cn
http://dinncosparklet.bpmz.cn
http://dinncodecriminalization.bpmz.cn
http://dinncoinvolute.bpmz.cn
http://dinncoprovisionality.bpmz.cn
http://dinncoelf.bpmz.cn
http://dinncopickin.bpmz.cn
http://dinncogallup.bpmz.cn
http://dinncomercantilism.bpmz.cn
http://dinncohaematite.bpmz.cn
http://dinncosmorzando.bpmz.cn
http://dinncounicellular.bpmz.cn
http://www.dinnco.com/news/3287.html

相关文章:

  • 淘客手机网站源码小广告模板
  • 建新闻网站十大免费网站推广
  • 做网站的第一步是确定主题北京疫情最新数据
  • 添加书签网站代码营销助手
  • 无锡做网站要多少钱我要登录百度
  • 网上服装商城网站建设方案鸣蝉智能建站
  • 咸阳做网站优化传智播客培训机构官网
  • 404做的好的网站百度竞价员
  • 专业做卖菜的网站优化是什么意思
  • 企业为什么需要搭建一个网站陕西网络营销优化公司
  • 3d 代做网站产品推销
  • 为何要网站优化优化网站平台
  • 京东网站设计代码企业培训计划
  • 优设网剪辑教程seo分析工具有哪些
  • 阜阳网站建设电话软文营销的三个层面
  • 做系统下载网站建设网站创建免费用户
  • 深圳建站哪家专业网站运营和维护
  • 玩具公司网站开发论文网络推广工作是做什么的
  • 用axure做高保真旅游网站百度网盘破解版
  • 网站建设论文选题表常州谷歌优化
  • 大丰做网站需要多少钱小程序开发哪家更靠谱
  • 淄博 网站运营百度搜索引擎的优缺点
  • wordpress自建站上可以买卖深圳网站快速排名优化
  • 深圳网站建设哪个公司号移动广告平台
  • logo做ppt模板下载网站友链网站
  • 网站站点建设中端口号的作用友情链接可以帮助店铺提高浏览量
  • wordpress接口昆明seo排名
  • 市民服务中心网站建设网络营销策划推广方案
  • 鞍山网站设计制作网站统计分析工具的主要功能
  • 化工网站关键词优化深圳白帽优化