> 백엔드 개발 > C++ > C에서 부호 없는 변수에 음수 값을 할당하면 어떻게 되나요?

C에서 부호 없는 변수에 음수 값을 할당하면 어떻게 되나요?

Mary-Kate Olsen
풀어 주다: 2024-12-18 13:18:16
원래의
631명이 탐색했습니다.

What Happens When You Assign a Negative Value to an Unsigned Variable in C  ?

부호 없는 변수에 음수 값 할당: 어떻게 되나요?

C에서 부호 없는 변수에 음수 값을 할당하려고 하면, 예:

unsigned int nVal = 0;
nVal = -5;
로그인 후 복사

행동은 다음과 같습니다. 당혹스럽습니다.

설명

C 표준의 섹션 4.7 CNN에 따르면:

"대상 유형이 서명되지 않은 경우 결과는 값은 소스 정수와 일치하는 가장 작은 부호 없는 정수입니다(모듈로 2n 여기서 n은 부호 없는 유형을 나타내는 데 사용되는 비트 수입니다."

2의 보수 표현(대부분의 최신 프로세서에서 사용)에서 이는 실제 변경 사항이 없음을 의미합니다. 잘림이 없는 경우 비트 패턴입니다. 결과는 (-5 232) 또는 4294967291에 해당하는 값입니다. 이는 -5의 2의 보수 표현이 4294967291의 비트 표현과 동일하기 때문입니다.

간단히 말하면, 부호 없는 변수에 음수 값을 할당해도 오버플로나 예외가 발생하지 않습니다. 대신, 동등한 양의 부호 없는 값으로 둘러싸입니다.

참고:

이 동작은 C에서 잘 정의되어 있지만 널리 이해되지는 않습니다. 서명되지 않은 변수로 작업할 때 이러한 잠재적 문제를 인식하는 것이 중요합니다.

위 내용은 C에서 부호 없는 변수에 음수 값을 할당하면 어떻게 되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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