for(int i=0 ; i<252 ; i++) grid_color[i]=0.4;
不寻常:
for(int i=0 ; i<252 ; grid_color[i++]=0.4) ;
两者之间有什么区别吗?实际上我问自己是否异常比通常更快
答案 0 :(得分:1)
两者之间没有显着差异。第二个是将循环增量与循环体相结合。执行速度也应该没有区别。
答案 1 :(得分:0)
风格是主要的区别(以及风格的后果,例如可维护性)
我希望你会发现第二名在这方面的选票很差。
回复:你的子问题,应该没有速度差异。
答案 2 :(得分:0)
没有区别。选择第一个超过第二个。实际上,为了避免在向for-loop体添加额外指令时出错,请考虑始终使用大括号。
for(int i=0 ; i<252 ; i++){
grid_color[i]=0.4;
}
你当然不必,但从维护的角度考虑是值得的。
由于您似乎关注效率,因此在您绝对需要时(当操作顺序要求获得正确的结果时),尝试养成仅使用后增量运算符而不是预增量运算符的习惯。如果是这样的基本for循环,你应该真正使用预增量运算符。
for(int i=0 ; i<252 ; ++i){
grid_color[i]=0.4;
}
对于像int这样的基本类型,它确实无关紧要,但你可能想养成使用预增量超过后增量的习惯,因为后增量必须创建一个副本,执行增量,并返回副本。预增量只是递增并返回值。这种选择可能成为非基本类型的效率问题;例如迭代器。
最后,如果您使用的是C ++ 11标准,请考虑使用专为所有类型设计的大括号初始值设定项(如果您创建自己的类型,则必须实现该功能)。
for(int i{0}; i<252 ; ++i){
grid_color[i]=0.4;
}
有趣的事实:如果初始化没有值的int,它将为零。
for(int i{}; i<252 ; ++i){
grid_color[i]=0.4;
}
我仍然会把零放在那里。
永远不要这样做:
for(int i; i<252 ; ++i){
grid_color[i]=0.4;
}
变量i未定义。