此C片段是合并算法实现的一部分:
out[i++] = (in1[i1] < in2[i2]) ? in1[i1++] : in2[i2++];
Run Code Online (Sandbox Code Playgroud)
有人可以解释它是如何工作的吗?
我们来看看示例代码:
var limit = 3;
while(limit--){
console.log(limit);
if(limit){
console.log("limit is true");
}else{
console.log("limit is false")
}
}
Run Code Online (Sandbox Code Playgroud)
输出将是:
2
"limit is true"
1
"limit is true"
0
"limit is false"
Run Code Online (Sandbox Code Playgroud)
有一个0,这意味着在最后一次条件时是假的.为什么最后一次循环会执行?
给出以下代码
int j = 0;
for (int i = 0; i < str.Length; ++i) {
if (i==j) {
Console.WriteLine ("equal");
}
j++;
}
Run Code Online (Sandbox Code Playgroud)
我预计++i会改变i,从最初0到1,从而i==j评价false.
但事实并非如此.为什么?
对于单维数组,通常我会像下面的那样使用for循环,但我想不出一种不涉及大量循环的方法.
for (int i = 0; i < myArray.length; ++i)
{
myArray[i] = rnd.Next(1, 500);
}
Run Code Online (Sandbox Code Playgroud) 考虑以下两个例子.
class ClassOne
{
//class definition is here
};
std::vector< ClassOne > myListOfObjects;
std::vector< ClassOne >::const_iterator iter = myListOfObjects.begin();
Example 1:
for( ; iter < myListOfObjects.end(); **++iter**)
{
//some operations
}
OR
Example 2:
for( ; iter < myListOfObjects.end(); **iter++**)
{
//some operations
}
Run Code Online (Sandbox Code Playgroud)
哪一个更快?循环上下文中的++ iter或iter ++.
从Brian的帖子复制(使问题更简洁).
var a = 0;
(++a)+(a++)+(++a);
print(a);
Run Code Online (Sandbox Code Playgroud)
打印3.我假设它只执行单个增量.
var a = 0;
(++a)+(a++)+(--a);
Run Code Online (Sandbox Code Playgroud)
打印1.此处遵循的规则是什么?
谢谢.
我正在使用Swift2,我有这两个循环:
for var i: Int = 0; i < 4; i++ {
print("the i = \(i)")
}
and
for var i: Int = 0; i < 4; ++i {
print("the i = \(i)")
}
Run Code Online (Sandbox Code Playgroud)
我在两者中都得到了完全相同的印刷品.告诉我为什么?
我正在使用递归将两个数字加在一起,方法是一次将1加到第一个输入,直到达到第二个的值。为什么这项工作...
private static int AddMethod(int input1, int input2)
{
if (input2 == 0)
{
Console.WriteLine(input1);
return (input1);
}
else
{
input1++;
input2--;
return AddMethod(input1, input2);
}
}
Run Code Online (Sandbox Code Playgroud)
但是不是这个
private static int AddMethod(int input1, int input2)
{
if (input2 == 0)
{
Console.WriteLine(input1);
return (input1);
}
else
{
return AddMethod(input1++, input2--);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Visual Studio 2010和.Net 4.0
代码:
for(int i=0;i<5;){
i=i++;
printf("%d",i);
}
Run Code Online (Sandbox Code Playgroud)
上面的程序无限打印零,这怎么可能?有声明i=i++;。请解释为什么 的值i不增加。