在Flash中测试此代码:
var i:int = 0;
for (var j:int = 0; j < 5000000; j++)
{
i=i+1;
}// use about 300ms.
i = 0;
for (var j:int = 0; j < 5000000; j++)
{
i++;
}// use about 400ms
i = 0;
for (var j:int = 0; j < 5000000; j++)
{
++i;
}// use about 400ms too
Run Code Online (Sandbox Code Playgroud)
为什么i=i+1ActionScript 3中的速度更慢?
对不起,我犯了一些错误.上面的代码使用的时间相同.但如果把它投入使用,结果会有所不同.
var i:int;
var j:int;
var startTime:Number;
function func1():void
{
i = i + 1;
}
function func2():void
{ …Run Code Online (Sandbox Code Playgroud) 为什么k没有增加,而i和j在同一个表达式中增加.我也想知道程序的输出是什么.我得到输出为-2 3 1 0
#include <stdio.h>
void main()
{
int i=-3, j=2, m, k=0;
m=++i && ++j || ++k;
printf("%d %d %d %d", i, j, m, k);
}
Run Code Online (Sandbox Code Playgroud) 在for循环中,我们使用的是在循环开始执行之前递增的++i含义.我在这里弄错了什么?i1
这是代码:
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100];
int i;
scanf("%s", str1);
for (i = 0; str1[i] != '\0'; ++i) {
str2[i] = str1[i];
}
str2[i] = '\0';
printf("%s\n", str2);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 如果我从Crockford的"Javascript:The Good Parts"中正确回忆起来,他并不赞成使用++或 - 运算符,但我也倾向于回忆他并没有提供一个特别强烈的反对它们的论据.
下面是这些运算符的使用,我发现这些运算符有助于保持我的代码尽可能简洁,特别是在处理返回-1的函数/方法时,0是第一个可能的有效返回值(以及正整数).我会对++和/或其他非典型用法感兴趣,这些用法有利于在有意义的情况下使用这些运算符.
我不认为这是为什么要避免JavaScript中的增量("++")和减量(" - ")运算符?而是它的必然结果:何时不能避免它们,而是将它们用于你的优势.当然我可能会弄错,可能有一些原因我不会想到为什么以下是充满危险的,尽管我觉得我很优雅 - 如果我遗漏了以下关于以下内容的次优,我我也想知道
var substrIdx = str.indexOf(substr);
if (++substrIdx) {
doSomething(--substrIdx);
}
Run Code Online (Sandbox Code Playgroud) 在K&R Ch 1中:
该语句
++nc提供了一个新的运算符,++表示递增1.你可以改写nc = nc + 1,但++nc更简洁,效率更高.
预增量何时比替代方案更有效?对于大多数事情,至少,两者的程序集都是add(edit:或inc)指令.它们何时不同?
我无法理解以下代码块.
int count = 0;
for (int i = 0; i < 3; i++){
count += (count++);
System.out.println("count = " + count);
System.out.println("i = " + i);
}
Run Code Online (Sandbox Code Playgroud)
我的理解是循环运行三次以执行以下操作
count = count + count
count = 1 + count
Run Code Online (Sandbox Code Playgroud)
这将转换为以下内容,因为count最初为0:
count = 0 + 0
count = 1 + 0 = 1
count = 1 + 1 = 2
count = 1 + 2 = 3
count = 3 + 3 = 6
count = 6 + 1 = 7 …Run Code Online (Sandbox Code Playgroud) 我正在运行以下C代码:
#define cube(x) (x*x*x)
void main()
{
int x=2,y;
y=cube(++x);
printf("%d %d",++x,y);
}
Run Code Online (Sandbox Code Playgroud)
我期待结果为
6,60
Run Code Online (Sandbox Code Playgroud)
但它给出了不同的结果.我想我对预处理器有误解.我认为代码将类似于
void main()
{
int x=2,y;
y=++x*++x*++x;
printf("%d %d",++x,y);
}
Run Code Online (Sandbox Code Playgroud)
如果我错了,请纠正我.
我将结果解释为3*4*5 = 60
但是它将会变为125
我知道StackOverflow上有很多关于这个主题的问题.但我仍然有点困惑,不确定何时使用这些操作.我正在通过旧考试来学习考试.其中一种方法可以获得残疾人无障碍且可用的教室数量.我写了计数器方法,但不确定我是否应该预先增加或增加计数器.我很困惑它如何在方法中使用return语句.我仍然没有得到该方法将在下面返回的值.其他问题没有显示方法中的返回值,因此我很困惑它实际上是如何工作的.这是代码:
public int howManyHandi()
{
int counter= 0;
for (int i = 0; i < _clsrms.length; i++){
if (_clsrms[i].handicappedSuitable() && _clsrms[i].isAvailable()){
++counter;
}
}
return counter;
}
Run Code Online (Sandbox Code Playgroud) 在Python中,我们如何在列表的方括号内增加或减少索引?
例如,在Java中使用以下代码
array[i] = value
i--
Run Code Online (Sandbox Code Playgroud)
可写成
array[i--]
Run Code Online (Sandbox Code Playgroud)
在Python中,我们如何实现它?
list[i--]不管用
我目前正在使用
list[i] = value
i -= 1
Run Code Online (Sandbox Code Playgroud)
请提供一个简洁的方法来实现此步骤.
只是为了看看我对++c/c++运算符的工作原理了解多少,我尝试运行这些 C 程序:
int c = 5;
c = c - c++;
printf("%d\n", c);
Run Code Online (Sandbox Code Playgroud)
打印 1,我猜逻辑是 ++ 在使用它的代码行之后应用,因此c变为= c - c0,并在“下一行”增加一。但对我来说似乎很奇怪,我想更详细地了解操作员优先级应该发生什么。
现在开始:
int c = 5;
c = c - ++c;
printf("%d\n", c);
Run Code Online (Sandbox Code Playgroud)
这个打印0,我真的不明白为什么。如果从左到右解析右手值,我想它会读取c哪个是 5,然后++c哪个是 6,因为它应该立即应用。或者它是否++c在整个右手值计算之前计算,因此它实际上是在做 6 - 6,因为增量还涉及第一次调用c?
pre-increment ×10
c ×5
java ×3
increment ×2
c++ ×1
decrement ×1
for-loop ×1
javascript ×1
loops ×1
operators ×1
performance ×1
python ×1