相关疑难解决方法(0)

x ++和++ x之间的差异?

可能重复:
java中的x ++和++ x之间有区别吗?

我正在阅读官方Java教程,我没有区分postfix和前缀(++ x vs x ++).有人能解释一下吗

java

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

为什么输出为0?

class T {
    public static void main(String args[]) {
        int x = 0;
        x = x++;
        System.out.println(x);
    }
}
Run Code Online (Sandbox Code Playgroud)

java

3
推荐指数
1
解决办法
182
查看次数

x + = ++ x相当于x = 2x + 1:为什么?

这个问题只是好奇心:我想知道一些人int x在行之后会有什么价值x += ++x 所以我试过了:

int x=10;
x+=++x;
System.out.println(x);
Run Code Online (Sandbox Code Playgroud)

它打印出来:

21
Run Code Online (Sandbox Code Playgroud)

在使用其他值进行一些测试后,它似乎等于x = 2x + 1.为什么?此行是否由编译器解释为字节操作?(顺便说一下,x + = x ++似乎等于x = 2x).

我不认为这是我在项目中使用的东西,但我很想知道为什么我得到这个结果.

谢谢你的任何解释或提示

编辑:首先,感谢您的回答

我知道+=操作员的工作方式,以及x++++x,但由于某种原因,(完全逻辑和明显的)结果对我来说似乎很奇怪我应该已经考虑过了,抱歉你的时间!

java

3
推荐指数
1
解决办法
228
查看次数

Java中增量运算符的奇怪行为?

我有一些代码:

int m = 4;
int result = 3 * (++m);
Run Code Online (Sandbox Code Playgroud)

int m = 4;
int result = 3 * (m++);
Run Code Online (Sandbox Code Playgroud)

执行m为5后,结果在第一种情况下为15,但在第二种情况下,m也为5,但结果为12.为什么会这样?它不应该是至少相同的行为?

我特别谈到优先规则.我一直认为这些规则表明,parantheses比一元运算符具有更高的优先级.那么为什么不首先评估这些问题中的表达呢?

java

1
推荐指数
1
解决办法
275
查看次数

编译器实现中x ++和++ x之间的区别

我搜索了x ++ vs ++ x,我在这里找到了一个很好的答案,所以我决定看看gcc的汇编输出,看看x ++和++ x是如何实现的:

main(){int s = 0; ++ S; 返回0; }

编译示例:

gcc mul.c -masm = intel -o mul.asm

++ s的输出:

    .file   "mul.c"
    .intel_syntax
    .text
    .p2align 4,,15
.globl main
    .type   main, @function
main:
    lea %ecx, [%esp+4]
    and %esp, -16
    push    DWORD PTR [%ecx-4]
    push    %ebp
    mov %ebp, %esp
    push    %ecx
    sub %esp, 16
    mov DWORD PTR [%ebp-8], 0
    add DWORD PTR [%ebp-8], 1
    mov %eax, 0
    add %esp, 16
    pop %ecx
    pop %ebp …
Run Code Online (Sandbox Code Playgroud)

c compiler-construction gcc

1
推荐指数
1
解决办法
686
查看次数

while循环结束时n ++和++ n之间的区别?(ANSI C)

这可能是一个愚蠢的问题,但我无法弄清楚。它与n ++和++ n之间的差异有关(我以为我理解但显然不是)。

#include <stdio.h>
#include <math.h>

long algorithmA(int n);
long algorithmB(int n);

int main(){
    long A, B;
    A = B = 0;
    int n = 1;
    while(A >= B){
        A = algorithmA(n);
        B = algorithmB(n);
        n++;
    }
    printf("At n = %d, Algorithm A performs in %ld seconds & "
           "Algorithm B performs in %ld seconds.", n, A, B);

}

long algorithmA(int n){
    return pow(n,4) * 86400 * 4;
}

long algorithmB(int n){
    return pow(3,n);
}
Run Code Online (Sandbox Code Playgroud)

在这里您可能会告诉我,我正在尝试看算法A在什么时候优于算法B。功课中的功能和时间单位是给我的。

无论如何,我一直认为在while循环结束时“ ++”的顺序无关紧要。但是,如果我使用++ n而不是n …

c increment pre-increment post-increment

0
推荐指数
2
解决办法
1万
查看次数

java中的递减和赋值运算符

有人可以解释为什么以下代码的输出为1.

int i = 1;
i=i--;
System.out.println(i); // 1
Run Code Online (Sandbox Code Playgroud)

java core

-1
推荐指数
1
解决办法
81
查看次数