2011-06-15 5 views
7

다음 결과가 34 인 이유는 무엇입니까? 8 진수와 관련이없는 것 같습니다.int 변수 앞에 0이 오나요?

intval(042); 
+0

PHP 워드 프로세서, http://php.net/manual/en이다 십진수로 변환 /language.types.integer.php. 8 진수는 0부터 시작합니다. –

+0

감사합니다. 알아 냈습니다. => 4 * 8 + 2 – RoboTamer

+0

0으로 시작하면 PHP가 값을 8 진수로 처리합니다. – GordonM

답변

15

그러나 앞자리 0은 여기에서와 같이 많은 언어에서 8 진수를 나타냅니다.

+0

첫 번째 정답은 ** 이유 **를 설명하는 +1입니다. –

0

단순히 함수가 정의되는 방식입니다. 맨 앞의 0은 명령으로 8 진수로 구문 분석합니다. 접두어가 16 진수임을 나타내는 0x와 유사합니다. the documentation for more information을 참조하십시오.

0

이 함수에 선행 0이있는 문자열 값을 전달할 때주의하십시오. "042"로 지정하면베이스 8-9로 취급하고 기본값 인 10 진수 값으로 변환합니다.

그것은 8 진수와 무슨 상관 this

1

을 통과하십시오, 0424 * 8 + 2 = 34 인 8 진수 42로 해석됩니다.

8 진수 해석은 PHP 스크립트를로드하는 동안 숫자 리터럴을 구문 분석 할 때 발생합니다. 여기에는 intval()과 아무런 관련이 없습니다.이 값은 이미 정수이기 때문에 여기서는 아무 것도하지 않습니다.

8 진수 해석은 문자열을 정수로 캐스팅하지 않을 때, 단지 숫자 리터럴로 발생합니다

intval(042) // == 34 
intval('042') // == 42 
(int)'042' // == 42 
1

는 PHP 0을 선도 숫자가 8 진수로 읽습니다.

그래서 042는 8 진수로 읽습니다.

INTVAL() 함수

34. 따라서 브라우저의 출력이 34 진수 숫자

관련 문제