1

在 c 中:

int a = 33;
a = a++;
printf("\n\t a :%d",a); // it'll print 34

在 Java 中:

int a = 33;
a = a++;
System.out.printf("\n\t a :%d",a); // it'll print 33

为什么后增量在 C 中可以正常工作,而在 Java 中为什么不行?

4

1 回答 1

3

好问题。

a++和之间有区别++a。在Java中(至少),每个都会增加变量,但是表达式表示的值是不同的。

int i = 0;
System.out.println(i++); // 0

int j = 0;
System.out.println(++j); // 1

因此,您将递增a1,然后将其设置回原始值

来自Java 教程

递增/递减运算符可以在操作数之前(前缀)或之后(后缀)应用。代码结果++;和++结果;都将导致结果加一。唯一的区别是前缀版本 (++result) 计算为递增值,而后缀版本 (result++) 计算为原始值。如果您只是执行简单的递增/递减,那么您选择哪个版本并不重要。但是,如果您在较大表达式的一部分中使用此运算符,则您选择的那个可能会产生显着差异。

于 2013-03-10T19:02:18.567 回答