C#의 short = short
동작 이해
C#에서 두 개의 short
변수를 직접 추가하면 잠재적인 오버플로로 인해 int
이 발생하고 결과를 short
:
<code class="language-csharp">Error: Cannot implicitly convert type 'int' to 'short'.</code>
그러나 복합 할당 연산자 =
를 사용하면 놀랍게도 작동합니다.
<code class="language-csharp">short a = 10; short b = 20; a += b; // This compiles and runs without error. Why?</code>
차이가 나는 이유
핵심은 C# 컴파일러가 복합 할당 연산자를 처리하는 방식에 있습니다. 두 개의 short
값을 추가하면 int
이 생성되지만 =
연산자는 암시적으로 int
결과를 할당 전의 short
으로 다시 캐스팅합니다. 이는 다음과 같습니다.
<code class="language-csharp">a += b; // Is the same as: a = (short)(a + b);</code>
이 암시적 캐스트는 명시적 변환 오류를 방지하여 일반적인 산술 연산을 위한 간결한 코드를 가능하게 합니다. 컴파일러는 기본적으로 변환과 관련된 잠재적인 데이터 손실을 처리합니다. 이 동작은 편의를 위해 그리고 다른 언어의 유사한 연산자 기능을 미러링하기 위해 설계되었습니다. 컴파일러 최적화를 통해 더 장황한 코드가 필요하지 않습니다.
위 내용은 암시적 변환 오류에도 불구하고 `short = short`가 C#에서 작동하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!