为什么java和c中增量运算符的行为不同

时间:2013-03-10 18:59:51

标签: java c post-increment

在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中呢?

1 个答案:

答案 0 :(得分:3)

好问题。

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

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

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

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

来自the Java Tutorial

  

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