프로그래밍 영역에서 접두사가 0인 숫자는 흥미로운 동작을 보일 수 있습니다. Visual Studio 2013의 예를 사용하여 세부 사항을 살펴보겠습니다.
다음 코드 조각을 고려하세요.
int i = 07; // i == 7 int i = 16; // i == 16 int i = 00016; // i == 14, why? int i = 05016; // i == 2574, wow ) int i = 08; // compile error, compiler expects octal number...
접두사가 0인 숫자의 특수 처리
컴파일러는 접두사가 0인 숫자를 다음에 따라 다르게 해석합니다. context:
00016과의 비정상적인 행동 05016
과제 int i = 00016; i == 14로 확인됩니다. 이는 C 표준에 따라 유효하지 않더라도 컴파일러가 선행 0을 추가 8진수로 처리하기 때문입니다.
마찬가지로, int i = 05016; 컴파일러가 이를 다음과 같이 해석하기 때문에 i == 2574를 산출합니다.
08의 컴파일 오류
0으로 시작하는 정수 리터럴 뒤에 0-7 이외의 숫자(예: 08)가 오면 컴파일이 트리거됩니다. 컴파일러는 이 값이 8진수일 것으로 예상하지만 8은 유효한 8진수가 아니기 때문에 오류가 발생합니다. 숫자.
위 내용은 C에서 접두사가 0인 숫자가 예기치 않게 작동하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!