我已經定義了數組gx,數組arr是short類型。但爲什麼左邊的操作可能以int類型結束,我必須簡化它?編譯器錯誤是可能的有損轉換從int到短。從int到short的可能有損轉換
這是我的代碼。
public PixImage sobelEdges() {
short gy=0;
for(int x=1;x<width-1;x++){
for(int y=1;y<height-1;y++){
// if(x=){
for(int z=0;z<3;z++){
gx[x][y][z]=arr[x-1][y-1][z]-arr[x+1][y-1][z]+2*arr[x-1][y][z]-2*arr[x+1][y][z]+arr[x-1][y+1][z]-arr[x+1][y+1][z];
}
// }
}
}
return this;
// Don't forget to use the method mag2gray() above to convert energies to
// pixel intensities.
}
是不是因爲所謂的拆箱?這意味着每次我進行手術時都需要施放?
'int'大於'short'。可能會丟失位。 –
編譯器可能注意到您將「short」值相乘並將結果存儲爲「short」。乘法的結果有可能比「short」更大。這與拳擊/取消裝箱無關。例如,這指的是從'int'到'Integer'的隱式轉換。 – bstar55
試着將你的2做短褲。 (短)2 * arr ... – bstar55