C 和 java 中的 i++ 区别

通过测试发现:

在Java语言中运行:

int i = 0;

i = i ++;

 i 的值为 0;

在C语言中运行:

int i = 0;

i = i ++;

i 的值为1;

是不是很奇怪?

原因很简单:C和java对++采用的运算机制不一样!

在Java语言中:

采用中间变量机制:

例如:
i = i++;

相当于:

temp = i;
i = i + 1;
i = temp; 

本质:在java中,执行自增运算时,会分配一个临时变量,

++i:就会先自加1后赋值给临时变量;

i++:就会先赋值给临时变量后自加1”;

运算最终使用的,并不是变量本身,而是被赋了值的临时变量。

在C语言中:

自增机制:

int a = 0

int i = 0;

搞清楚:a = i++ 和 i = i++;结果是不同的,为什么?

i++ 操作意味着 在返回结果之后再进行自增。

++i 操作意味着 在返回结果之前进行自增。

那么结果显而易见,a为0,那i为什么为1?

请见过程:i = i++ => i = 0, i = i+1

i = 0 是因为i++的返回值是0,进行了赋值

i = i+1 是因为 i需要自增!

猜你喜欢

转载自blog.csdn.net/qq_37061368/article/details/106683302