public class Zhuanhuan1
{
public static void zhuanhuan1(int num)
{
char[]arr1={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] arr=new char[8];
int top=arr.length; while(num!=0)
{
int temp=num&15;
arr[--top]=arr1[temp];
num=num>>>4;

}

for(int x=top;x<arr.length;x++)
{
System.out.print(arr[x]);
}
}
public static void main(String args[])
{
zhuanhuan1(60);

}

}加红色的这两个地方,如果同时改为int top=arr.length-1和arr[top--],那它为什么会将第一次执行的结果储存在arr[6]中,而不是arr[7]呢?
不是说:top--是先取值再自减吗?那么top=arr.length-1,arr[top--]=arr1[temp],如果按先取值在自减的,那么应该是arr1[temp]储存到arr[7]里面吧?
求高手解答,看看我这样想是那里出问题了,
感谢

解决方案 »

  1.   

    如果改为int top=arr.length-1和arr[top--]
    那么第一次取值应该是arr[7],--放在右边是先取值再减一
      

  2.   

    第一次取值是arr[7],--放在右边是先取值再减一,那是不是说先把arr1[temp]的值赋给arr[7],然后7再自减啊?
      

  3.   

    把你的打印那句换成System.out.println("arr["+x+"] = "+String.valueOf(arr[x]));
    执行的打印结果是
    arr[5] = 
    arr[6] = 3
    arr[7] = C
    那么第一次取值是存储在了arr[7]中,你的问题在哪里呢?
      

  4.   

    通常说的先减再赋值,是赋值给另外一个变量,而不是别人赋值给自增或自减的变量,表理解错了e.g: int i=5;int a=--i ; //a=4 先减再赋值
         int i=5;int a=i-- ; //a=5 赋值后再减
      

  5.   

    数组下标也是一样。
    int [] arr={1,2,3,4};
    int i=1;
                    int a=arr[++i]; 
                    int b=arr[i++];   
            System.out.println(a);    //3
    System.out.println(b);    //3