问下面程序的输出结果 
public class \\此部分省略 
public void main(String[] args){ 
int i = 0; 
i = i++; 
System.out.println(i); } 以下程序错误的是() 
1. short s = 1; s = s + 1; 2. short s = 1; s += 1; 知道的请写出详细原因, 里面的s=s+1和s+=1有什么区别? 谢谢

解决方案 »

  1.   


    1.0
    2
    s+=1 等价于 s=(short)s+1内涵一个强制类型转换
      

  2.   

    晕,第一题没结果
    public static void main
      

  3.   


    1.
    输出结果是0 ,i++是先调用,后加1。
    2.
    2 s+=1 等价于 s=(short)s+1内涵一个强制类型转换。
      

  4.   

    1. 0
    i=i++; 意味着 int temp = i++; ----> temp = 1; ----> i = 2; ----> i = temp; ----> i = 1; 
    2. 2
    算术运算符运算时有自动提升(如short,byte,char,int型数据运算要提升成int型运算结果也是int),+=是扩展运算符结果是运算符左边类型。
      

  5.   

    第二题选第一个,s + 1得付给个int。 
      

  6.   

    你的i初始值是0啊,我以为是1呢。i=i++; 意味着 int temp = i++; ----> temp = 0; ----> i = 1; ----> i = temp; ----> i = 0; 
      

  7.   

    1、0
    2、1错误。s+1结果是int不可以直接在赋值给short了,s+=1  -> s= (short)s+1;
      

  8.   

    1. 输出结果是0 ,解释:i++是先调用,后加1。
       另:      
             ......
            int i = 0; 
         i = i++;
         i = i++;//注:不论下面还有多少个i = i++;最后输出的i=0!
         System.out.println(i); 
    2. 1错误,解释: s+=1 等价于 s=(short)s+1内涵一个强制类型转换。
      

  9.   

    2 s+=1 等价于 s=(short)s+1内涵一个强制类型转换。
      

  10.   

    第二个隐含一个强制类型转换,
    另外与你问题无关的,第二行注释符号错了
    还有少个static,编程还是细心点儿好