在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中呢?
答案 0 :(得分:3)
好问题。
a++
和++a
之间存在差异。在Java(至少)中,每个都会增加变量,但表达式表示的值是不同的。
int i = 0;
System.out.println(i++); // 0
int j = 0;
System.out.println(++j); // 1
因此,您将a
递增1,然后将其设置回原始值。
可以在操作数之前(前缀)或之后(后缀)应用递增/递减运算符。代码结果++;和++结果;两个结果都会以一个增加结果。唯一的区别是前缀版本(++结果)评估为增量值,而后缀版本(结果++)评估为原始值。如果您只是执行简单的增量/减量,那么选择哪个版本并不重要。但是,如果您在较大的表达式中使用此运算符,则您选择的运算符可能会产生显着差异。