代码一:
char c=s.charAt(i);
c+=26;代码二:
char c=s.charAt(i);
c=c+26;
//为什么代码二编译不过去
望高手指点

解决方案 »

  1.   

    经典,以前还真没注意过~~~~~
    这样就可以了 c = (char)(c + 26);
      

  2.   

    在第二种c+26 26是int型的 不能自动转换为char型,需强制类型转换, 第一种会默认转换为char型
      

  3.   

    这样也可以吧  c = (int) c + 26
      

  4.   

    是不是都升上来 变成int了啊
      

  5.   

    說起這兩個語句的區別就是:
    c += 26;裏面c只會被計算一次
    而c = c + 26;裏面c則被計算了兩次
    因為在JAVA中除了LONG型一切整型值跟的算術運算都按int型計算,所以第二式右邊的結果變成了int型,而int型是不能直接賦給char型的.
      

  6.   

    任何C/C++编译器都会无警告通过,没想到JAVA编译器这么鸟差
      

  7.   

    任何C/C++编译器都会无警告通过,没想到JAVA编译器这么鸟差
    --------------------------------------------------------
    跟编译器有鸟关系,语言规定如此,遵守就是了。
    某些语言不用定义变量就能使用,c++就不行,由此可见,c++编译器真是鸟差。
      

  8.   

    任何C/C++编译器都会无警告通过,没想到JAVA编译器这么鸟差
    --------------------------------------------------------
    跟编译器有鸟关系,语言规定如此,遵守就是了。
    某些语言不用定义变量就能使用,c++就不行,由此可见,c++编译器真是鸟差。
    --------------------------------------------------------
    JAVA变量定义完全是抄席C/C++
    实际应用中类似  char1 = char2+char3+1 ; 这样的例子太多了,
    死活非得把1解释成32位太愚蠢了,不停的让程序员做类型转换太麻烦,太影响工作效率了.
    不是编译器问题是什么?
      

  9.   

    第二种c+26 26是int型的 不能自动转换为char型,需强制类型转换, 第一种会默认转换为char型
      

  10.   

    跟编译器有鸟关系,语言规定如此,遵守就是了。
    某些语言不用定义变量就能使用,c++就不行,由此可见,c++编译器真是鸟差。
    --------------------------------------------------------
    按你的理解
    c+=26;不应该通过,必须写成c+=(char)26;
    今天不小心点击错误才进来看到这贴,服了.
      

  11.   


    代码二:
    char c=s.charAt(i);
    c=c+26;
    //为什么代码二编译不过去
    c=(char)(c+26);