> 백엔드 개발 > C++ > 암시적 변환 오류에도 불구하고 `short = short`가 C#에서 작동하는 이유는 무엇입니까?

암시적 변환 오류에도 불구하고 `short = short`가 C#에서 작동하는 이유는 무엇입니까?

DDD
풀어 주다: 2025-01-23 08:37:09
원래의
675명이 탐색했습니다.

Why Does `short  = short` Work in C# Despite Implicit Conversion Errors?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿