就是这个位置为什么写c=c++,最后打印的是初始量
直接写c++最后 输出的就是c++量
我这样理解,假设c=1
c=c++; 相当于tmp=c++; c=tmp; 相当于这两句的合体。那么c++属于后自增,所以在执行c++前就会把原来的c赋值给左边tmp,所以tmp=1,然后赋值完再执行自增,即c=2。既然还有一句c=tmp,当然此时c=1。
对于你直接使用c++,那么就是执行c自增当然c=2
这个应该与自增变量的执行有关系,根据参考链接,c=c++;这句代码,左边的c保存在局部变量中,右边的i++放进操作数栈中。首先是把c的值0压入操作数栈,然后c++自增变为1, 此时c=1,然后把操作数栈中的值赋值给c,c又变为了0,所以这行代码运行多少次都一直会是0.(具体可以看下贴的参考链接)
而c++;这句代码,每次后会让c自增1,循环五次,所以结果会是5.
测试代码如下:
参考链接:
import java.util.Scanner;
public class shangjyus {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = 0;
if(a>=b) {
while(a>=b) {
a=a-b;
c=c++;
//c++;
//System.out.println("a="+a+",b="+b+",c="+c);
}
System.out.println(c);
System.out.println(a+c);
}else {
while(b>=a) {
b=b-a;
c=c++;
}
System.out.println(c);
System.out.println(b+c);
}
}
}