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

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

Barbara Streisand
풀어 주다: 2024-11-18 10:13:02
원래의
765명이 탐색했습니다.

Why does `0123` evaluate to 83 in C/C  ?

C/C에서 숫자 상수 앞에 '0'을 붙이는 경우

질문:

왜 C/C에서 '0'이라는 접두사가 붙은 정수 상수가 예상과 다른 값으로 평가됩니까? 예를 들어, 상수 '0123'을 사용하면 123 대신 값 83이 됩니다.

답변:

C/C 및 기타 프로그래밍 언어에서 숫자 상수는 그들이 나타내는 숫자 기반을 나타내기 위해 다른 접두사가 붙습니다. '0' 접두사는 8진수(8진수) 상수를 나타냅니다.

컴파일러는 '0' 접두사가 붙은 숫자 상수를 발견하면 그 뒤에 오는 숫자를 8진수로 해석합니다. '0123'의 경우 (0 8^3) (1 8^2) (2 8^1) (3 8^0)으로 처리되는데, 이는 은 10진수로 83으로 평가됩니다.

이는 '0'으로 시작하는 숫자 상수를 다음과 같이 처리한다는 C/C 언어 사양과 일치합니다. 8진수. 이 규칙은 정수 및 부동 소수점 상수 모두에 적용됩니다.

C/C 프로그램에서 숫자 데이터를 정확하게 표현하고 해석하려면 숫자 접두사의 역할을 이해하는 것이 중요합니다.

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

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