首页 / 知识
关于C#:++ i和i ++有什么区别?
2023-04-13 01:06:00
What is the difference between ++i and i++?在C语言中,使用
本厂是 在任何的情况下,"我更愿意跟在 有一个关于这几对 效率的问题是有趣的……这是我的回答:一项.有性能之间的差异+和I C + +我的对吗? 弗氏完全佐剂(FCA)的在线笔记,这是一个C++的对象不同的是,由于 i++被称为后增量,而+i被称为前增量。 让我们看看下面的示例:
这里是 我们来看下面的例子:
这里是 对于您的问题,应该在for循环的递增块中使用哪个?答案是,你可以用任何一个……没关系。它将执行相同次数的for循环。
和
两个循环将产生相同的输出。即 它只关系到你在哪里使用它。
在这种情况下,输出将是 请不要担心,"效率"(速度,其中一个是真的)。。。。。。。。这些天,我们有一个照顾者的这些东西。一个用以使义以较高者为准,而更多地基于显示你的意图。 它的微妙的差异。 如果使用的是 i++:-在这个场景中,首先分配值,然后发生增量。 ++在这个场景中,首先完成增量,然后分配值 下面是图像可视化,这里还有一个很好的实用视频(http://www.youtube.com/watch)。v=lrtcfgbuxm4),表示相同。 我试着不去依赖太多optimizations在线编译器,所以我跟瑞安福克斯的建议:当我可以使用一个 作为一个结果,无论是在相同的有效利用。在其他的话,将在环的两个实例中的相同的精确的事情。 在条款的有效率,可以在相关的问题上选择与I + + + +(在条款的语言规范,使用后应增加额外的运营商创建一个复制的值是在运营商的在线代理。这可能是额外的源操作。 然而,你应该考虑两个主要问题,与前面的逻辑。 现代编译器是伟大的。所有的编译器都意识到了这是一个智能的整型数是看到在环,它将两种方法的优化和高效的代码。如果在使用前后的增量增量实际上使你的程序有一个较慢的运行时间是可怕的,你使用的编译器。 运算时间复杂度而言,在这两个方法(即使是正在执行的副本实际上是等效的)。被执行的指令的数量应该dominate环内的数量显着增加的操作的操作。因此,在任何重大的环的大小的增量法,将造成大规模overshadowed由执行的循环体。在其他的话,你是我们的下worrying美妙优化代码中的循环,而不是增加。 在我看来,整个问题将下降到我们的风格偏好。如果你想增加更多的前一读,然后使用它。我个人的选择,但增后,可能是因为它是我知道我是在做关于优化为主。 这是一个典型的例子和问题过早的优化,这样有潜在的严重的问题,在distract达到设计中。它仍然是好的,但问的问题,因为有一个在使用中的一致性或"最佳实践"。 它们都会增加数字。++i等于i=i+1。 我和我非常相似,但不完全一样。这两者都会增加数值,但在计算当前表达式之前,++i会增加数值,而在计算表达式之后,++i会增加数值。 例子:
++i是预增量,另一个是后增量 i++:获取元素,然后将其递增。++i:递增i,然后返回元素 例子:
输出:
++i(前缀操作):递增然后赋值(例如):int i=5,int b=++i在这种情况下,6首先分配给B,然后递增到7,依此类推。 I++(后缀操作):分配然后增加值(例如):int i=5,int b=i++在这种情况下,5首先分配给B,然后递增到6,依此类推。 在for循环中:通常使用i++是因为,在for循环中递增之前,通常使用i的起始值。但是,根据程序逻辑,它可能会有所不同。 这种差异可以通过以下简单的C++代码来理解:
我假设你现在理解了语义上的差异(尽管老实说,我想知道为什么人们在堆栈溢出时问"operator x是什么意思"而不是阅读,你知道,一本书或是网络教程之类的。 但不管怎样,就使用哪一个而言,忽略性能问题,这是即使在C++中也不太重要。这是你在决定时应该使用的原则使用: 说出你在代码中的意思。 如果在语句中递增之前不需要该值,则不要使用该形式的运算符。这是一个小问题,但除非你正在使用禁止使用的样式指南完全支持另一个版本(又称骨头型指南),您应该使用最准确地表达你想要做什么的形式。 QED,使用预增量版本:
短期内:++如果你不在函数中编写它们,我和我++的工作原理是一样的。如果您使用函数(i++)或函数(++i),您可以看到不同之处。 函数(++i)表示第一个增量i乘以1,然后将这个i放入具有新值的函数中。 函数(i++)表示将第一个i放入函数中,然后将该增量i增加1。
预修正是指同一条线上的增量。后增量是指行执行后的增量。
当它与或和运算符一起使用时,它会变得更有趣。
数组中
指针变量的C++后置/预增量
下面的C代码片段说明了前后递增和递减运算符之间的区别: INTI;int j; //递增运算符 i=1; j=++i;//我现在是2,j也是2 j=i++;//我现在是3,j是2 i++与++i 这个小代码可能有助于从一个不同的角度来可视化不同于已经发布的答案:
结果是:
注意前后情况。 for循环至于在for循环的增量块中应该使用哪一个,我认为我们可以做的最好的决定是使用一个好例子:
结果是:
我不知道你的情况,但我看不出它的用法有什么不同,至少在for循环中是这样。 唯一的区别是变量增量和运算符返回值之间的操作顺序。 此代码及其输出解释了不同之处:
输出为:
因此,基本上, 另一个例子:
输出:
很多时候没有区别 当返回值被分配给另一个变量时,或者当增量与应用了操作优先权的其他操作串联时(
有同样的效果
要记住的规则 为了避免混淆这两个运算符,我采用了以下规则: 将运算符 换言之:
您可以将其内部转换为多个语句;
a=i++表示a包含当前i值a=++i表示a包含递增的i值 以下是理解差异的示例
输出: 说明:打印 |
最新内容
相关内容
对数组使用Python For循环
对数组使用Python For循环,名称,培训,代码,健康,水牛,数组,元素,有用,下面,以上,您可以使用for循环从数组中获取特定元素。假设您有一组水牛bFor循环如何在Python中工作
For循环如何在Python中工作,工作,项目,代码,培训,流程,示例,序列,语句,语法,实际,Python的for循环通过遍历数组的序列来工作。从本质上讲,它在Python循环应该怎么写?
Python循环应该怎么写?,代码,项目,数据,名字,分析,异常,基础,培训,面临,情况,说到处理循环,我们习惯使用for,while等,比如依次打印每个列表中的Python语言自带的数据结构有哪些
Python语言自带的数据结构有哪些,异常,数字,数据,元素,序列,培训,位置,名称,分析,括号,Python作为一种脚本语言,其要求强制缩进,使其易读、美观Python变量的类型(弱类型语言)
Python变量的类型(弱类型语言),检测,代码,数据,培训,类型,变量,语言,赋值,数字型,字符串,在强类型的编程语言中,定义变量时要指明变量的类型,而Python语言
Python语言,工作,代码,标准,系统,庞大,密码,培训,管理,发展,数据,Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,具有20多年解释型语言python和编译型语言
解释型语言python和编译型语言,平台,环境,培训,语言,程序,文件,机器码,效率,定义,操作系统,首先Python是一门解释型语言,计算机是不能识别高python支持r语言吗?
python支持r语言吗?,代码,名称,培训,官网,第一,语言,对象,字符串,方法,后缀,python中可以支持r语言。python提供了一个模块rpy2,可以较好地完python是一种编程语言吗?
python是一种编程语言吗?,放宽,适当,平台,培训,语言,指令,计算机,机器,程序,解释性,python是一种编程语言,Python是一种跨平台的计算机程序设计Python语言中mod表示什么意思
Python语言中mod表示什么意思,环境,培训,表示,语言,结果,负数,语法,符号,两者,规律,python语言中mod表示取模运算符。语法MOD(a,b)通常情况下Python语言专题
Python语言专题,名字,工作,代码,异常,培训,信息,空间,函数,变量,模块,名字空间python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是python到底是什么样的语言
python到底是什么样的语言,教育,软件,人工智能,培训,代码,简介,语言,类型,程序,动态,python是一种面向对象、解释型、动态类型计算机程序设计