복합 할당 연산 자+=도대체 어떻게 연산 합 니까?

1460 단어 자바
제목:
short s1 = 1; 
s1 = s1 + 1;

 무슨 잘못 이 있 습 니까? 
short s1 = 1; 
s1 +=1;

 무슨 잘못 이 있 습 니까? 
이 문 제 는 어떻게 보면 이 두 단락 의 코드 는 별 차이 가 없 는 것 같 지만,그들의 집행 결 과 는 다르다.
결 과 는 첫 번 째 코드 가 틀 릴 수 있 고 두 번 째 코드 는 틀 리 지 않 습 니 다.
첫 번 째 코드 에 대한 분석:
이 코드 의 두 번 째 문장(s1=s1+1)은 간단 한 두 숫자 를 더 한 결과 첫 번 째 변수 에 값 을 부여 합 니 다.
이때 연산 결과 의 데이터 형식 은 다음 과 같은 규칙 에 의 해 순서대로 결정 된다.
1,가산 에 참여 하 는 표현 식 이나 숫자 에 double 형식 이 있다 면 결 과 는 double 형식 입 니 다.
2,가산 에 참여 하 는 표현 식 이나 숫자 에 float 형식 이 있 으 면 결 과 는 float 형식 입 니 다.
3,가산 에 참여 하 는 표현 식 이나 숫자 에 long 형식 이 있 으 면 결 과 는 long 형식 입 니 다.
4.가산 에 참여 하 는 표현 식 이나 숫자 가 3 이상 의 데이터 형식 이 없 으 면 결 과 는 일률적으로 int 형식 입 니 다.
이 규칙 에 따라 s1=s1+1;그러면 최종 연산 결 과 는 int 여야 하기 때문에 short 형식의 s1 에 값 을 부여 하 는 데 오류 가 발생 할 수 있 습 니 다.
두 번 째 코드 에 대한 분석:
num 1+=num 2 와 같은 형식의 복합 할당 표현 식 은 실제(num 1 의 유형)(num1+num 2)과 같 습 니 다.즉,두 개의 수 를 더 한 결 과 를 할당 연산 자 왼쪽 연산 자의 데이터 형식 으로 강제 전환 하 는 것 입 니 다.유일한 차이 점 은 num 1 이 한 번 만 계산 하기 때문에 이론 적 으로 복합 할당 연산 자의 효율 이 더욱 높다 는 것 이다.
s1+=1;s1=(short)(s1+1)과 같 습 니 다.그 러 니까 결 과 는 괜찮아.
 
여러분,이 규칙 을 아 셨 나 요?다음 두 단락 의 코드 를 보십시오.당신 은 정 답 을 정확하게 말 할 수 있 습 니까?
아래 코드 는 어떤 값 을 출력 합 니까?
short x = 3;
x += 4.6;
System.out.print(x);

 아래 코드 가 틀 렸 습 니까?
 
int i = 5;
long j = 8;
i = i + j;
i += j;

좋은 웹페이지 즐겨찾기