정수에서 앞에 오는 0의 수수께끼 풀기
Visual Studio 2013에서 관찰한 동작은 Visual Studio 2013에서 정수를 표현하는 규칙을 반영한 것입니다. 다양한 기수, 특히 10진수, 8진수, 16진수.
C의 정수 리터럴은 0으로 시작하여 다양한 진수를 나타낼 수 있습니다.
귀하의 예에서:
08을 할당하려고 할 때 컴파일러 오류는 8이 유효하지 않기 때문에 발생합니다. 8진수. 7까지만 유효합니다.
00016에서 14로 변환하는 이유는 8진수 리터럴의 앞에 오는 0이 해당 숫자가 8진수임을 나타내기 때문입니다. 컴파일러는 각 숫자를 곱하여 변환을 수행합니다. 오른쪽에서 왼쪽으로 8의 거듭제곱으로 계산됩니다.
00016의 경우 이는 다음과 같이 해석됩니다. to:
0 * 8^4 0 * 8^3 0 * 8^2 1 * 8^1 6 * 8^0 = 14
따라서 관찰한 동작은 컴파일러의 결과입니다. C의 선행 숫자와 다양한 진수에 대한 규칙을 기반으로 숫자 값을 해석합니다.
위 내용은 선행 0이 C에서 정수 값을 변경하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!