标签: post-increment

++ i和i ++有什么区别?

在C中,使用++i和之间有什么区别i++,哪些应该在for循环的增量块中使用?

c for-loop pre-increment post-increment

818
推荐指数
19
解决办法
96万
查看次数

448
推荐指数
11
解决办法
10万
查看次数


循环中i ++和++ i之间的区别?

是否有差异++i,并i++在一个for循环?它只是一个语法的东西吗?

language-agnostic for-loop pre-increment post-increment

294
推荐指数
10
解决办法
28万
查看次数

"x = x ++"之后的x是什么?

执行此操作后会发生什么(窗帘后面)?

int x = 7;
x = x++;
Run Code Online (Sandbox Code Playgroud)

也就是说,当一个变量后期递增并在一个语句中赋值给自己时?我编译并执行了这个.在整个声明之后x仍然是7 .在我的书中,它说增加了!x

java operators post-increment

273
推荐指数
11
解决办法
4万
查看次数

C中*ptr + = 1和*ptr ++之间的差异

我刚刚开始学习C,当做一个关于将指针作为函数的参数传递给指针的例子时,我发现了一个问题.

这是我的示例代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int* allocateIntArray(int* ptr, int size){
    if (ptr != NULL){
        for (int i = 0; i < size; i++){
            ptr[i] = i;
        }
    }
    return ptr;
}

void increasePointer(int** ptr){
    if (ptr != NULL){
        *ptr += 1; /* <----------------------------- This is line 16 */
    }
}

int main()
{
    int* p1 = (int*)malloc(sizeof(int)* 10);
    allocateIntArray(p1, 10);

    for (int i = 0; i < 10; i++){
        printf("%d\n", p1[i]);
    }

    increasePointer(&p1);
    printf("%d\n", *p1);
    p1--;
    free(p1); …
Run Code Online (Sandbox Code Playgroud)

c pointers post-increment

121
推荐指数
3
解决办法
2万
查看次数

后增量(i ++)和预增量(++ i)运算符如何在Java中工作?

你能解释一下这个Java代码的输出吗?

int a=5,i;

i=++a + ++a + a++;
i=a++ + ++a + ++a;
a=++a + ++a + a++;

System.out.println(a);
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

两种情况下的输出均为20

java pre-increment post-increment

88
推荐指数
8
解决办法
29万
查看次数

C++中的增量 - 何时使用x ++或++ x?

我目前正在学习C++,而且我刚刚学会了增量.我知道你可以使用"++ x"进行增量,然后使用"x ++"进行增量.

不过,我真的不知道何时使用两者中的任何一个...我从来没有真正使用过"++ x",到目前为止,事情总是很好 - 所以,我什么时候应该使用它?

示例:在for循环中,何时优先使用"++ x"?

此外,有人可以确切地解释不同的增量(或减量)如何工作?我真的很感激.

c++ pre-increment post-increment

83
推荐指数
7
解决办法
16万
查看次数

为什么"while(i ++ <n){}"明显慢于"while(++ i <n){}"

显然在我的Windows 8笔记本电脑上使用HotSpot JDK 1.7.0_45(所有编译器/ VM选项都设置为默认值),下面的循环

final int n = Integer.MAX_VALUE;
int i = 0;
while (++i < n) {
}
Run Code Online (Sandbox Code Playgroud)

比以下情况快至少2个数量级(~10 ms vs.~5000 ms):

final int n = Integer.MAX_VALUE;
int i = 0;
while (i++ < n) {
}
Run Code Online (Sandbox Code Playgroud)

在编写循环以评估另一个不相关的性能问题时,我碰巧注意到了这个问题.之间的差异++i < ni++ < n是巨大的,足以显著影响结果.

如果我们查看字节码,更快版本的循环体是:

iinc
iload
ldc
if_icmplt
Run Code Online (Sandbox Code Playgroud)

而对于较慢的版本:

iload
iinc
ldc
if_icmplt
Run Code Online (Sandbox Code Playgroud)

因此++i < n,它首先将局部变量递增i1,然后将其推入操作数堆栈,同时i++ < n以相反的顺序执行这两个步骤.但这似乎并不能解释为什么前者要快得多.后一种情况是否涉及临时副本?或者是否应该负责性能差异的字节码(VM实现,硬件等)以外的东西?

我已经阅读了一些关于++ii++(但并非详尽无遗)的其他讨论,但未找到任何特定于Java的答案,并且与价值比较中涉及++ii++涉及的情况直接相关.

java performance compiler-optimization pre-increment post-increment

74
推荐指数
3
解决办法
9556
查看次数

++ Var和Var ++之间的区别

在编程中,特别是在Java中,有什么区别:

int var = 0;
var++;
Run Code Online (Sandbox Code Playgroud)

int var = 0;
++var;
Run Code Online (Sandbox Code Playgroud)

这会对for循环产生什么影响?

例如

for (int i = 0; i < 10; i++) {}

for (int i = 0; i < 10; ++i) {}
Run Code Online (Sandbox Code Playgroud)

java increment operators pre-increment post-increment

73
推荐指数
5
解决办法
8万
查看次数