"C - C++"关于后缀/前缀操作排序的笑话

Naz*_*iuk -2 java syntax operator-precedence

我的朋友给我发了个笑话:

问:C和C++有什么区别?

A.没什么,因为:(C - C++ == 0)

我试图改变秩序并陷入困境.

看看这段代码:

public class Test {
    public static void main(String args[]) {
        int c = 10;         
        System.out.println(c++ - c);
        System.out.println(++c - c);        
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么会回归:

-1
0
Run Code Online (Sandbox Code Playgroud)

我理解postfix和前缀增量.为什么不是这个结果?

0
1
Run Code Online (Sandbox Code Playgroud)

cdh*_*wie 11

因为在第一个例子中,c开始10. c++增量c并返回10,所以第二个c现在评估为11,因为它是递增的.所以评估的最终表达式是10 - 11等于-1.

在第二个示例中,再次++c递增c但返回12,因为它是预增量.第二个也c评估为12,因为它是存储的新值c.因此表达式最终被评估为12 - 12等于0.

  • 在Java?你确定吗? (2认同)