programing

Int, Int16, Int32 및 Int64의 차이점은 무엇입니까?

telecom 2023. 5. 15. 21:17
반응형

Int, Int16, Int32 및 Int64의 차이점은 무엇입니까?

사이의 차이점은 무엇입니까?int,System.Int16,System.Int32그리고.System.Int64그들의 크기 이외에?

각 유형의 정수는 서로 다른 스토리지 용량 범위를 가집니다.

   Type      Capacity

   Int16 -- (-32,768 to +32,767)

   Int32 -- (-2,147,483,648 to +2,147,483,647)

   Int64 -- (-9,223,372,036,854,775,808 to +9,223,372,036,854,775,807)

제임스 서덜랜드가 답변에서 언급한 바와 같이:

int그리고.Int32동의어입니다; 로동입니다의어실제다▁are.int 더 하게 보일예요, 좀더친모습될겁이니다한숙▁will겁다니될.Int32코드를 읽는 사용자에게 32비트를 더 명확하게 표시합니다.', '정수', '정수 '정수', '만 있으면 되는 곳에서 사용하는 이 있습니다.Int32 코드an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an an int적절하다면, 해야 합니다, 그나변화주야의합해니다에우경러적절한▁changing합▁if다니▁care▁take.Int32변수도 마찬가지입니다.

결과 코드는 동일하게 됩니다. 차이는 가독성 또는 코드 모양 중 하나입니다.

여기서 유일한 실질적인 차이는 크기입니다.여기에 있는 모든 int 유형은 다양한 크기를 가진 부호 있는 정수 값입니다.

  • Int16()
  • Int32그리고.int
  • Int64 8인치

사이에는 작은 차이가 하나 있습니다.Int64그리고 나머지. 32비트 에 됩니다.Int64저장 위치가 원자적이어야 하는 것은 아닙니다.다른 모든 유형에 대해 보장됩니다.

인트

C#에 정의된 원시 데이터 유형입니다.

FCL 유형의 Int32에 매핑됩니다.

값 유형이며 시스템을 나타냅니다.Int32 구조.

서명이 되어 있고 32비트가 소요됩니다.

최소 -2147483648 및 최대 +2147483647 값을 가집니다.

Int16

FCL 타입입니다.

C#에서 쇼트는 Int16에 매핑됩니다.

값 유형이며 시스템을 나타냅니다.Int16 구조.

서명이 되어 있고 16비트가 소요됩니다.

최소 -32768 및 최대 +32767 값을 가집니다.

Int32

FCL 타입입니다.

C#에서 int는 Int32에 매핑됩니다.

값 유형이며 시스템을 나타냅니다.Int32 구조.

서명이 되어 있고 32비트가 소요됩니다.

최소 -2147483648 및 최대 +2147483647 값을 가집니다.

Int64

FCL 타입입니다.

C#에서 long은 Int64에 매핑됩니다.

값 유형이며 시스템을 나타냅니다.Int64 구조.

서명이 되어 있고 64비트가 소요됩니다.

최소 -9,223,372,036,854,775,808 및 최대 9,223,372,036,854,775,807 값을 가집니다.

제프리 리히터(의 기여자 중 한 명)에 따르면.NET 프레임워크 개발)의 책 'CLR via C#':

int는 C# 컴파일러가 허용하는 원시 유형인 반면, Int32는 프레임워크 클래스 라이브러리 유형입니다(CLS를 준수하는 여러 언어에서 사용 가능).사실, int는 컴파일 중에 Int32로 변환됩니다.

또한.

C#에서 시스템에 긴 맵을 표시합니다.Int64, 그러나 다른 프로그래밍 언어로, long은 Int16 또는 Int32에 매핑될 수 있습니다.실제로 C++/CLI는 Int32만큼 오래 처리됩니다.

사실 대부분(.NET) 언어는 키워드로 오래 다루지도 않고 이를 사용하는 코드를 컴파일하지도 않습니다.

저는 이 작가와 많은 표준 문헌을 보았습니다.NET은 주로 이러한 상호 운용성 문제에 대해 언어별 원시 유형(즉, Int32)보다 FCL 유형(즉, Int32)을 선호합니다.

그들은 정수 변수에 저장할 수 있는 크기를 알려줍니다.크기를 기억하려면 맥주 2병(2바이트), 맥주 4병(4바이트) 또는 맥주 8병(8바이트)으로 생각할 수 있습니다.

  • Int16 : - 맥주 2잔/바이트 = 16비트 = 2^16 = 65536 = 65536/2 = -32768 ~ 32767

  • Int32 : - 맥주 4잔/바이트 = 32비트 = 2^32 = 4294967296 = 4294967296/2 = -2147483648 ~ 2147483647

  • Int64 : - 맥주 8개/바이트 = 64비트 = 2^64 = 18446744073709551616 = 184467440737095516/2 = -92233736854775808 ~ 922332036854775807

즉, int16에는 32767개, int32에는 2147483647개, int64에는 9223372036854775807개 이상의 값을 저장할 수 없습니다.

위의 계산을 이해하기 위해 이 비디오를 int16int32int64에서 확인할 수 있습니다.

int16vsint32vsint64

16, 32 및 64 유형에 대한 매우 중요한 참고 사항:

이 쿼리를 실행하면...Array.IndexOf(새 Int16[]{1,2,3},1)

당신은 ...을 요구하기 때문에 0을 얻어야 합니다.는 1, 2 또는 3의 배열 내에서 1입니다. 답으로 -1이 나오면 1이 1, 2 또는 3의 배열 내에 없다는 것을 의미합니다.

제가 찾은 것을 확인해 보십시오.다음은 모두 -1이 아닌 0이어야 합니다(모든 프레임워크 버전 2.0, 3.0, 3.5, 4.0에서 테스트했습니다).

C#:

Array.IndexOf(new Int16[]{1,2,3}, 1) = -1 (not correct)
Array.IndexOf(new Int32[]{1,2,3}, 1) = 0 (correct)
Array.IndexOf(new Int64[]{1,2,3}, 1) = 0 (correct)

VB.NET:

Array.IndexOf(new Int16(){1,2,3}, 1) = -1 (not correct)
Array.IndexOf(new Int32(){1,2,3}, 1) = 0 (correct)
Array.IndexOf(new Int64(){1,2,3}, 1) = -1 (not correct)

그래서 제 요점은, 어레이에 대한 것입니다.비교 지수, Int32만 신뢰!

편집: 제가 이 질문에 답할 때 놓친 태그인 C#에 대해서는 사실이 아닙니다. C#에 대한 더 구체적인 답변이 있다면 대신 투표해 주십시오!


이들은 모두 다양한 크기의 정수를 나타냅니다.

하지만 아주 작은 차이가 있습니다.

int16, int32 및 int64는 모두 고정된 크기를 가집니다.

int의 크기는 컴파일 중인 아키텍처에 따라 다릅니다. C 규격은 int를 쇼트보다 크거나 동일하게 정의하지만 실제로는 32비트이지만 그렇지 않을 수도 있다는 것을 알아야 합니다.

아무 것도 없어요.유형 간의 유일한 차이는 크기(따라서 표현할 수 있는 값의 범위)입니다.

  1. int그리고.int32하나이고 동일함(32비트 정수)
  2. int16is short int(2바이트 또는 16비트)
  3. int64긴 데이터 유형(8바이트 또는 64비트)

둘 다 동의어이긴 하지만, 저는 그들 사이의 작은 차이점을 발견했습니다.

사용할 수 없습니다.Int32생성하는 동안enum

enum Test : Int32
{ XXX = 1   // gives you compilation error
}

enum Test : int
{ XXX = 1   // Works fine
}

2)Int32시스템 선언에 포함됩니다.제거하면using.System컴파일 오류가 발생하지만 다음 경우에는 발생하지 않습니다.int

위 사람들의 대답은 거의 맞습니다.int, int16, int32... 데이터 보유 용량에 따라 다릅니다.하지만 컴파일러가 이 문제를 해결해야 하는 이유는 여기에 있습니다. 잠재적인 2038년 문제를 해결하기 위해서입니다.자세한 내용을 보려면 링크를 확인하십시오.https://en.wikipedia.org/wiki/Year_2038_problem

Int=Int32 --> 원래 롱타입

Int16 --> 원본 int

Int64 --> 64비트 시스템 이후 새로운 데이터 유형 사용 가능

"int"는 이전 버전과 호환되는 경우에만 사용할 수 있습니다.우리는 우리의 프로그램을 더 정확하게 만들기 위해 정말로 새로운 int 유형을 사용해야 합니다.

---------------

과정에서 한 가지 더 주목한 것은 이름이 붙은 클래스가 없다는 것입니다.IntInt16, Int32 및 Int64와 유사합니다.다음과 같은 모든 유용한 기능TryParse정수는 에서 오기 때문에Int32.TryParse.

언급URL : https://stackoverflow.com/questions/9696660/what-is-the-difference-between-int-int16-int32-and-int64

반응형