> 백엔드 개발 > C++ > C/C에서 '0123'이 '83'으로 인쇄되는 이유는 무엇입니까?

C/C에서 '0123'이 '83'으로 인쇄되는 이유는 무엇입니까?

DDD
풀어 주다: 2024-11-14 18:24:02
원래의
982명이 탐색했습니다.

Why does

C/C에서 앞에 0이 있는 숫자 상수 이해하기

C/C에서 숫자 상수 앞에 '0'이 붙을 수 있습니다. 기본 또는 숫자 체계를 나타냅니다. 이 접두사는 상수가 8진수(8진법) 값임을 나타냅니다.

'0123'을 정수 상수로 사용하면 컴파일러는 이를 8진수 값으로 해석합니다. 8진수 체계에서 '123'은 10진수 값 83(881 3)을 나타냅니다. 따라서 값을 인쇄하면 123이 아닌 83이 출력됩니다.

이 동작은 GCC와 같은 C 및 C 컴파일러에서 일관됩니다. 변환 규칙은 약간 다를 수 있지만 접두사가 '0'인 부동 소수점 상수에도 적용됩니다.

숫자 상수의 기준을 명시적으로 지정하려면 다음 접두사를 사용할 수 있습니다.

  • '0': 8진수(기수 8)
  • '0x' 또는 '0X': 16진수(기수 16)
  • 접두사 없음: 10진수(기수 10)

예를 들어 10진수 123을 8진수로 표현하려면 '0123'을 사용하면 됩니다. 반대로 8진수 값 83을 10진수 상수로 나타내려면 83을 사용합니다.

위 내용은 C/C에서 '0123'이 '83'으로 인쇄되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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