可能重复:
循环中i ++和++ i之间的区别?
任何人都可以解释这些之间的区别:
for(unsigned col = 0; col < n; ++col, num_to_fill >>= 1U)
{
for(unsigned row = num_to_fill; row < (1U << n); row += (num_to_fill * 2))
{
std::fill_n(&output[col][row], num_to_fill, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
和
for(unsigned col = 0; col < n; col++, num_to_fill >>= 1U)
{
for(unsigned row = num_to_fill; row < (1U << n); row += (num_to_fill * 2))
{
std::fill_n(&output[col][row], num_to_fill, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
什么时候col=0
,ex.1 Output[col][row]
将在output[1][row]
和ex.2 Output[col][row]
中output[0][row] …
确切重复:在C++中i ++和++ i之间是否存在性能差异?
确切重复:循环中i ++和++ i之间的区别?
什么更有效,i ++或++ i?
我只在Java和C/C++中使用过这个,但我真的要求实现它的所有语言.
在大学里我有一位教授告诉我们++我更有效率,但已经有几年了,我想从Stack Overflow社区获得意见.
由于JSLint,我几乎总是使用i += 1
增加JavaScript for循环,但对于快速和脏脚本,我使用i++
.
但是,我在其他人的代码中看到了很多for循环,在这些代码中,他们i
通过++i
代替来增加.
据我所知,i++
和之间没有区别++i
,而且jsPref在性能上没有差别.
因此,我想知道做的惯例++i
来自哪里以及为什么人们倾向于这样做.
有谁知道为什么很多JS编码器往往喜欢++i
在i++
一个递增计数器循环什么时候?
谢谢.
我试图解决这个问题:编写一个函数,找到字符串中最长运行的从零开始的索引.运行是相同字符的连续序列.如果有多个具有相同长度的运行,则返回第一个的索引.
例如,IndexOfLongestRun("abbcccddddcccbba")应该返回6,因为最长的运行是dddd,它首先出现在索引6上.
按照我的所作所为:
private static int IndexOfLongestRun(string str)
{
char[] array1 = str.ToCharArray();
//Array.Sort(array1);
Comparer comparer = new Comparer();
int counter =1;
int maxCount = 0;
int idenxOf = 0;
for (int i =0; i<array1.Length-1 ; i++)
{
if (comparer.Compare(array1[i],array1[i+1]) == 0)
{
counter++;
}
else {
if(maxCount < counter)
{
maxCount = counter;
idenxOf = i - counter + 1;
}
counter = 1;
}
}
return idenxOf ;
}
}
public class Comparer : IComparer<char>
{
public int …
Run Code Online (Sandbox Code Playgroud) 可能重复:
为什么在语句中的其他地方没有使用值的情况下使用++ i而不是i ++?
C++中的增量 - 何时使用x ++或++ x?
i++ vs. ++i
Run Code Online (Sandbox Code Playgroud)
什么时候在真实场景中使用?
System.out.println(info + ": " + ++x);
Run Code Online (Sandbox Code Playgroud)
这个陈述相当于
x++;
System.out.println(info + ": " + x);
Run Code Online (Sandbox Code Playgroud)
和
System.out.println(info + ": " + x++);
Run Code Online (Sandbox Code Playgroud)
相当于
System.out.println(info + ": " + x);
x++;
Run Code Online (Sandbox Code Playgroud)
由于JVM一次只能处理一个语句,它是否会像这样划分这些语句?
我正在学习c ++而且我遇到了一些我无法解释的行为.下面的两段代码提供了不同的结果,而我希望它们是等价的:
success = true;
vector<instruction>::const_iterator i;
for (i = instructions.begin(); i != instructions.end(); ++i) {
bool up = update(*i);
success = success && up;
}
Run Code Online (Sandbox Code Playgroud)
和
success = true;
vector<instruction>::const_iterator i;
for (i = instructions.begin(); i != instructions.end(); ++i) {
success = success && update(*i);
}
Run Code Online (Sandbox Code Playgroud)
我的印象是第二个版本总是采用迭代器的初始值.有人可以解释一下原因吗?
在C++中,A + = B优于A = A + B,同样地,++ A是A ++?
我知道"++ A"预增量至少与"A ++"后增量一样快.这里讨论了许多地方,包括这里和这里.同样,预期A + = B至少与A = A + B一样快,如此处所示.
我在看这个++:
//From https://herbsutter.com/2013/05/13/gotw-2-solution-temporary-objects/
T T::operator++(int)() {
auto old = *this; // remember our original value
++*this; // always implement postincr in terms of preincr
return old; // return our original value
}
Run Code Online (Sandbox Code Playgroud)
我的理由是,在最坏的情况下(可能来自复杂的对象类型)A = A + B必须检索并存储A并在将其保存回原始A位置之前添加B,而A + = B将采用B并添加直接到A.我的推理是否正确?
期望基本类型在编译时重新排列为相同,并且这实际上仅适用于需要运算符重载的复杂对象.
这是否一般扩展到大多数命令式语言?
可能的重复:
i ++或++ i的效率更高?
我们如何解释表达式的结果(++ x)+(++ x)+(++ x)?
循环中i ++和++ i之间的区别?
我正在尝试这两个程序:
void fun(){
int k = 0;
int i= 10;
k = (i++)+(++i);
cout << k << endl;
}
Run Code Online (Sandbox Code Playgroud)
输出= 22,因为i ++将给出10而++我将评估为12.
但
void fun(){
int k = 0;
int i = 10;
k = (++i)+(++i);
cout << k << endl;
}
Run Code Online (Sandbox Code Playgroud)
输出= 24
它应该是23我猜,还是有些东西我无法看到?
对于第一个代码,
int i = 1;
while (i < 10)
if ((i++) % 2 == 0)
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
系统输出:3 5 7 9
对于第二个代码,
int i = 1;
while (i < 10)
if ((i=i+1) % 2 == 0)
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
系统输出:2 4 6 8 10
为什么两个输出不同但公式相同?
c++ ×5
java ×3
algorithm ×1
c# ×1
for-loop ×1
icomparer ×1
if-statement ×1
javascript ×1
loops ×1
performance ×1