在C中,使用++i和之间有什么区别i++,哪些应该在for循环的增量块中使用?
有没有之间的性能差异i++而++i如果结果不能用?
我们有一个问题是Ci++和++i C之间有性能差异吗?
C++的答案是什么?
是否有差异++i,并i++在一个for循环?它只是一个语法的东西吗?
我目前正在学习C++,而且我刚刚学会了增量.我知道你可以使用"++ x"进行增量,然后使用"x ++"进行增量.
不过,我真的不知道何时使用两者中的任何一个...我从来没有真正使用过"++ x",到目前为止,事情总是很好 - 所以,我什么时候应该使用它?
示例:在for循环中,何时优先使用"++ x"?
此外,有人可以确切地解释不同的增量(或减量)如何工作?我真的很感激.
使用类似的东西是否有任何性能差异
for(int i = 0; i < 10; i++) { ... }
Run Code Online (Sandbox Code Playgroud)
和
for(int i = 0; i < 10; ++i) { ... }
Run Code Online (Sandbox Code Playgroud)
或者编译器是否能够以这样的方式进行优化,使它们在功能相同的情况下同样快速?
编辑:这是因为我与同事讨论过这个问题,并不是因为我觉得它在任何实际意义上都是有用的优化.它主要是学术性的.
你好,我刚刚开始学习Java,现在我正在进行循环语句.我不明白++ i i ++如何在for循环语句中工作.
我的意思是他们如何在数学运算中工作,如加法和减法.我希望有人会向我解释这一点.
我很清楚在C++中
int someValue = i++;
array[i++] = otherValue;
Run Code Online (Sandbox Code Playgroud)
与...相比有不同的效果
int someValue = ++i;
array[++i] = otherValue;
Run Code Online (Sandbox Code Playgroud)
但每隔一段时间我就会在for循环中看到带有前缀增量的语句,或者仅仅是它们自己的语句:
for( int i = 0; i < count; ++i ) {
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
要么
for( int i = 0; i < count; ) {
//do some stuff;
if( condition ) {
++i;
} else {
i += 4;
}
}
Run Code Online (Sandbox Code Playgroud)
在后两种情况下,++i看起来像是试图生成看起来很聪明的代码.我在监督什么吗?是否有理由使用++i而不是i++后两种情况?
确切重复:在C++中i ++和++ i之间是否存在性能差异?
确切重复:循环中i ++和++ i之间的区别?
什么更有效,i ++或++ i?
我只在Java和C/C++中使用过这个,但我真的要求实现它的所有语言.
在大学里我有一位教授告诉我们++我更有效率,但已经有几年了,我想从Stack Overflow社区获得意见.
我试图通过示例显示前缀增量比后缀增量更有效.
理论上这是有道理的:i ++需要能够返回未增加的原始值并因此存储它,而++我可以返回增量值而不存储先前的值.
但是有一个很好的例子可以在实践中证明这一点吗?
我尝试了以下代码:
int array[100];
int main()
{
for(int i = 0; i < sizeof(array)/sizeof(*array); i++)
array[i] = 1;
}
Run Code Online (Sandbox Code Playgroud)
我使用gcc 4.4.0编译它,如下所示:
gcc -Wa,-adhls -O0 myfile.cpp
Run Code Online (Sandbox Code Playgroud)
我再次这样做,后缀增量更改为前缀增量:
for(int i = 0; i < sizeof(array)/sizeof(*array); ++i)
Run Code Online (Sandbox Code Playgroud)
在两种情况下,结果都是相同的汇编代码.
这有些出乎意料.似乎通过关闭优化(使用-O0)我应该看到显示概念的差异.我错过了什么?有更好的例子来展示这个吗?
c++ ×5
performance ×4
c ×2
for-loop ×2
java ×2
operators ×2
optimization ×2
c# ×1
oop ×1
prefix ×1