programing

int 유형의 리터럴 xyz가 범위를 벗어났습니다.

bestcode 2023. 1. 1. 11:11
반응형

int 유형의 리터럴 xyz가 범위를 벗어났습니다.

현재 자바에서 데이터 타입을 사용하고 있으며, 그 타입을 올바르게 이해하고 있다면long는 -9,223,372,036,854,775,808 ~+9,223,372,036,854,775,807 범위의 값을 받아들입니다.아래 보시는 바와 같이, 제가 만든 것은long호출된 변수testLong9223372036854775807을 값으로 삽입하면 다음과 같은 오류가 나타납니다.

타입 int의 리터럴9223372036854775807이 범위를 벗어났습니다.

그게 왜 이 문제를 언급하고 있는지 모르겠어요.long데이터 유형으로서의int.

생각나는 사람?

코드:

char testChar = 01;
byte testByte = -128;
int testInt = -2147483648;
short testShort = -32768;
long testLong = 9223372036854775807;
float testFoat;
double testDouble = 4.940656458412;
boolean testBool = true;

대문자 추가L마지막까지:

long value = 9223372036854775807L;

그렇지 않으면 컴파일러는 리터럴을 해석하려고 합니다.int이 때문에 에러 메시지가 표시됩니다.

왜 긴 데이터 유형을 int라고 하는지 모르겠습니다.

그것은 아니다.컴파일러 메시지를 신뢰하는 법을 배워야 합니다(특히 오래된 컴파일러가 아닌 정상적인 최신 컴파일러의 메시지일 경우).그들이 말하는 언어는 때때로 해독하기 어려울 수 있지만, 그들은 보통 당신에게 거짓말을 하지 않습니다.

다시 한 번 살펴보겠습니다.

int 9223372036854775807 리터럴이 범위를 벗어났습니다.

주의: 당신의 변수는 언급되어 있지 않습니다.testLong또는 종류long문제는 초기화가 아닙니다.뭔가 다른 곳에서 일어나는 것 같아요.

이제 메시지의 일부에 대해 알아보겠습니다.

  • int우리에게 그가 무언가를 치료하고 싶어한다는 것을 말해준다.int가치(원하는 바가 아닙니다)
  • 「범위외」는 꽤 명확합니다.뭔가가 예상 범위내에 있지 않습니다(예상 범위외).int)
  • "더 리터럴" : 흥미롭네요. 리터럴이란 무엇인가?

잠시 리터럴에 대해 이야기하기 위해 간단한 목록을 남겨두겠습니다. 리터럴은 코드 내에서 가치가 있는 분야입니다.있다String리터럴int리터럴class리터럴 등.코드에 명시적으로 값을 언급할 때마다 문자 그대로입니다.

변수 선언이 아니라 수치 그 자체입니다.가치가 괴롭히는 거죠

이것은, 같은 리터럴을 사용하는 것으로 간단하게 확인할 수 있습니다.long그리고int동등하게 허용됩니다.

System.out.println(9223372036854775807);

PrintStream.println또는 (또는 다른 거의 모든 것을) 취할 수 있습니다.그럼 그 암호는 괜찮겠죠?

아니, 그래야 할 것 같은데, 규칙에 따르면 괜찮지 않아

문제는 '일부 숫자'가 리터럴로 정의되어 있기 때문에 다음에서 정의되는 범위 내에 있어야 한다는 것입니다.int.

'를 쓰고 long그대로를 돼요.L 소문자)l대문자 배리언트를 사용하는 것이 좋습니다.왜냐하면, 이 배리언트는 읽기 쉽고, 다른 배리언트와 혼동하기 어렵기 때문입니다.1를 참조해 주세요.

「」에서도해 주세요.float (postfix)F/f 및 )의 개요double (postfix)D/d를 참조해 주세요.

주의사항: 고객님은 고객님의 요구에 부응할 수 없다는 것을 알게 되실 겁니다.byte ★★★★★★★★★★★★★★★★★」short을 할당할 수 은 값을할 수 있습니다).intbyte ★★★★★★★★★★★★★★★★★」short변수: 할당 콘텍스트에서의 변환에 관한 § 5.2의 특별한 규칙에 의해 가능합니다.이러한 규칙에 의해, 보다 큰 타입의 상수 표현을 할당할 수 있습니다.byte,short,char ★★★★★★★★★★★★★★★★★」int 이 유형 범위 내에 있는 경우.

번 .9223372036854775807L . 。L마지막으로 자바에게 말한다.9223372036854775807는 입니다.long.

나는 과거에 이런 문제가 있었고 그 값을 과학적 형태로 써서 고쳤다.예를 들어 다음과 같습니다.

double val = 9e300;
long ak = 34778754226788444L/l;

둘 다 사용하지만 대문자 L 또는 소문자 L을 사용하는 것은 한 번에 1개뿐입니다.

L/L을 사용하는 이유long은 적분 데이터 유형의 일부이기 때문입니다.

언급URL : https://stackoverflow.com/questions/7093186/the-literal-xyz-of-type-int-is-out-of-range

반응형