assignment-operator - 코 틀린 비트 연산자 - Java의 + =,-=, * =, / = 복합 할당 연산자에 캐스팅이 필요하지 않은 이유는 무엇입니까?

Kotlin / java / casting / operators / variable-assignment

오늘까지 저는 예를 들어 다음과 같이 생각했습니다.

i += j;

다음의 바로 가기 일뿐입니다.

i = i + j;

그러나 우리가 이것을 시도하면 :

int i = 5;
long j = 8;

GMachado



Answer #1

i = i + l 경우 explicitly long 에서 int 로 캐스트해야 합니다. 그러면 컴파일되고 올바른 출력이 제공됩니다. 처럼

i = i + l 경우 explicitly long 에서 int 로 캐스트해야 합니다. 그러면 컴파일되고 올바른 출력이 제공됩니다. 처럼

i = i + (int)l;
i = (int)((long)i + l); // this is what happens in case of += , dont need (long) casting since upper casting is done implicitly.