我明白那个:
i++;
Run Code Online (Sandbox Code Playgroud)
应该采取更多的指示
++i;
Run Code Online (Sandbox Code Playgroud)
因为它生成了一个你不需要使用的中间结果,所以人们把"++ i"放在对中间结果毫无用处的代码行上.
但是,编译器非常聪明,他们可以判断结果是否被使用.他们可以说出各种各样的事情.但它们并不神奇
所以我很好奇 - 在现代编译器上确实选择了另一种实际问题,或者它是否只是简单地编译成相同的机器代码?
他们说这++i更快但我不明白为什么.谁能告诉我这些运营商的汇编代码?
根据谷歌C++样式指南,"当忽略返回值时,'pre'形式(++i)的效率永远不会低于'post'形式(i++),并且效率通常更高."
该指南继续解释原因,但我不完全理解.思考?也许有人可以提供这个概念的例子?
正如在主题中,我在学校里学到的是,速度更快,但有人告诉我,虽然速度更快......我必须优化程序,我想写'while',而不是'for',但是......它赢了'慢一点?例如:
for (int i=0; i<x; i++)
{
cout<<"dcfvgbh"<<endl;
}
Run Code Online (Sandbox Code Playgroud)
我会写:
i=0;
while (i<x)
{
cout<<"dcfvgbh"<<endl;
i++;
}
Run Code Online (Sandbox Code Playgroud) 在浏览 Linux 源代码时,我遇到了以下行:
int tmp;
for (tmp = PIDTYPE_MAX; --tmp >= 0; )
Run Code Online (Sandbox Code Playgroud)
为什么不这样做:
for (tmp = PIDTYPE_MAX; tmp >= 0; tmp--)
Run Code Online (Sandbox Code Playgroud)
这是另一种for循环优化吗?
我把这段代码展示给了我的朋友
$user->attempts++; // the attempts property returns an int
Run Code Online (Sandbox Code Playgroud)
并且他就像是说代码是多么愚蠢,漫无边际的数字运算符会在附加到对象时产生语法错误; 事情是它按照我的预期工作(增加尝试1,哦是的,我测试了它)
所以我问,为什么这到底有效?
我是C++的初学者.我的理解是: -
i ++首先执行,然后递增,++ i先递增,然后执行,i + = 1递增1,然后执行.但是在FOR循环中:
for (i=0;i<10;i++)
for (i=0;i<10;++i)
Run Code Online (Sandbox Code Playgroud)
上面这两个循环确实没有区别.
这是另一个计算从1到100的所有整数的总和:
int i=1, sum=0;
while (i<=100)
{
sum+=i;
i++; //i+=1; ++i;
}
cout<<sum<<" "<<i<<endl;
return 0;
Run Code Online (Sandbox Code Playgroud)
但是如果我用i + = 1或++ i替换i ++,它们都会返回5050和101的总和.所以我真的看不出它们有什么不同.
所以有人可以向我解释这个吗?编程中哪一个最常用?谢谢!!
S++或者S=S+1,可以建议将值增加1,为什么?
我认为S++应该是首选,因为它是内部的单机指令(INC).如果我错了,请让我纠正.其他方式我认为两者都是相同的,除了++是一元的,它的后增量和运算符重载都是不同的.
C#会有什么不同吗?
选项1:
vector vec;
/* ... .. ... */
for (auto itr = vec.begin(); itr != vec.end(); itr++) {
itr->print();
}
Run Code Online (Sandbox Code Playgroud)
选项2:
vector vec;
/* ... .. ... */
for (auto itr = vec.begin(); itr != vec.end(); ++itr) {
itr->print();
}
Run Code Online (Sandbox Code Playgroud)
我的意思是,我知道它们会提供相同的输出,但是它们在性能方面有什么区别吗?
c++ ×8
for-loop ×3
increment ×3
c ×2
c++11 ×2
performance ×2
c# ×1
do-while ×1
object ×1
php ×1
visual-c++ ×1
while-loop ×1