Java初学者的一些小问题

就是这个位置为什么写c=c++,最后打印的是初始量
直接写c++最后 输出的就是c++量

img

img

我这样理解,假设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);
        }
    }

}


img