변수가 RAM에 저장되는 방식과 관련하여 "int? X = 0"과 "int? X = null"의 차이점은 무엇입니까?


대답 1:

널 입력 가능 유형에는 값이 유효한지 여부를 나타내는 추가 필드가 있습니다. 귀하의 예가 C #에있는 것처럼 보입니다. 이 경우 int? System.Nullable 의 줄임말입니다. System.Nullable 는 추가 부울 필드 HasValue로 T를 래핑하는 제네릭 형식입니다. 이 추가 부울 필드는 T에 대한 스토리지와 함께 메모리에 저장됩니다. 널 입력 가능 값 유형에 대해 C #에서 추가 된 구문은 필드를 사용하는 기본 조치를 숨 깁니다.

개념적으로 코드는 다음과 같습니다.

INT? x = 0; //로 번역
x. 값 = 0;
x.HasValue = true;

INT? x = 널; //로 번역
x.HasValue = 거짓;

값 유형의 모든 비트 패턴 (예 : 정수)이 유효한 상황에서는 언어에 유효한 값이 있는지 또는 변수를 널로 처리해야하는지 표시하기 위해 추가 필드 또는 표시기를 추가해야합니다. 이론적으로 컴파일러에서 일부 비트 패턴이 유효하지 않은 값임을 알고 있으면 유효하지 않은 패턴 중 하나를 사용하여 널값을 표시하고 추가 스토리지를 사용하지 않을 수 있습니다. 그러나 실제로 이것은 불가능할 수 있으므로 항상 사용되는 여분의 메모리 덩어리를 보게 될 것입니다.

널 입력 가능 구조 (시스템)


대답 2:

프로그래밍 언어가 어떻게 구현되는지에 전적으로 달려 있습니다. 동일한 언어는 하드웨어 및 특정 컴파일러에 따라 다양한 방식으로 구현 될 수 있습니다.

많은 언어에서 변수는 실제 데이터가 저장되는 특정 메모리 위치를 식별합니다. 변수의 값이 0 인 경우 위치가 설정됩니다. null 인 경우, 위치 자체는 의미없는 값, 0 또는 그 밖의 값으로 설정됩니다.


대답 3:

프로그래밍 언어가 어떻게 구현되는지에 전적으로 달려 있습니다. 동일한 언어는 하드웨어 및 특정 컴파일러에 따라 다양한 방식으로 구현 될 수 있습니다.

많은 언어에서 변수는 실제 데이터가 저장되는 특정 메모리 위치를 식별합니다. 변수의 값이 0 인 경우 위치가 설정됩니다. null 인 경우, 위치 자체는 의미없는 값, 0 또는 그 밖의 값으로 설정됩니다.


대답 4:

프로그래밍 언어가 어떻게 구현되는지에 전적으로 달려 있습니다. 동일한 언어는 하드웨어 및 특정 컴파일러에 따라 다양한 방식으로 구현 될 수 있습니다.

많은 언어에서 변수는 실제 데이터가 저장되는 특정 메모리 위치를 식별합니다. 변수의 값이 0 인 경우 위치가 설정됩니다. null 인 경우, 위치 자체는 의미없는 값, 0 또는 그 밖의 값으로 설정됩니다.


대답 5:

프로그래밍 언어가 어떻게 구현되는지에 전적으로 달려 있습니다. 동일한 언어는 하드웨어 및 특정 컴파일러에 따라 다양한 방식으로 구현 될 수 있습니다.

많은 언어에서 변수는 실제 데이터가 저장되는 특정 메모리 위치를 식별합니다. 변수의 값이 0 인 경우 위치가 설정됩니다. null 인 경우, 위치 자체는 의미없는 값, 0 또는 그 밖의 값으로 설정됩니다.