IT story

1… 1이 10.1로 평가되는 이유는 무엇입니까?

hot-time 2020. 5. 26. 07:46
반응형

1… 1이 10.1로 평가되는 이유는 무엇입니까? [복제]


이 질문에는 이미 답변이 있습니다.

방금 3v4l에서 약간의 PHP 스 니펫에 직면했습니다 : https://3v4l.org/jmrZB

echo 1...1; //10.1

결과를 어떻게 설명해야할지 모르겠습니다. 이것이 왜 유효한 것으로 간주됩니까?


점 ( .)은 PHP에서 두 가지 역할을합니다.

  1. 실수의 일부인 경우 10 진수로 표시됩니다 (예 :) 1.1. 정수 부분과 소수 부분은 실수로 선택 사항 이지만 동시에는 아닙니다 . 이것은 PHP에서 유효한 실수 1.이고 둘 다를 의미 .1하지는 .않습니다.
  2. 현상태대로 문자열 연결 연산자 . 이 연산자는 두 개의 문자열 하위 표현식을 더 큰 표현식으로 연결합니다. 더 큰 표현식의 값은 하위 표현식의 문자열 값을 연결 한 것입니다. 문자열이 아닌 하위 표현식은 연결 전에 문자열로 변환됩니다.
    1 . 1를 들어 동일 '1' . '1'하고 값은 문자열 '11'입니다.

식은 1...1로 구문 분석됩니다 1. . .1. 이들에 따르면, 상술 한 특징, 1..1실수 (아르 1.00.1)과 중간 점 ( .) 문자열 연결 연산자이다.

숫자를 문자열로 변환 할 때 PHP는이 작업에 필요한 최소 문자 수를 사용합니다. 실수에 정수 부분 만있는 경우 소수점과 소수점없이 정수로 숫자를 나타냅니다.

그렇기 때문에 식의 최종 값이와 1. . .1같습니다 .'1' . '0.1'10.1

1...1이런 식으로 구문 분석됩니까?

파서는 식을 왼쪽에서 오른쪽으로 읽습니다. 1숫자가 거기에서 시작한다고 알려줍니다. 1.유효한 실수이지만 1..그렇지 않습니다. 1.숫자로 유지 하고 다음 점은 연결 연산자입니다. 다음 .에 숫자가 오는 것은 다른 실수의 시작입니다 ( .1).

대체로 1...1와 동일합니다 1. . .1.


1. . .1( 10.1) 로 해석 되므로10.1


중괄호를 적용하면 다음과 같이 명확 해집니다.

(1.) . (.1)

  • 1. 로 해석된다 1
  • .문자열 연결입니다
  • .1 로 해석된다 0.1

문자열로이 모든 풋은 10.1 문자열로 .

var_dump(1...1) 수확량string(4) "10.1"


다른 작업.

1. <?php echo 1.1; ?> // gives simple 1.1
2. <?php echo 1...1; ?> // gives 10.1
3. <?php echo 1..'1'; ?> // gives 11
4. <?php var_dump(1.); ?> // gives 1
5. <?php var_dump(.1); ?> // gives 0.1

이제 우리의 이상한 조작

echo 1...1 

No 4와 No 5의 연결로 취급되어 10.1

참고 URL : https://stackoverflow.com/questions/45139805/why-does-1-1-evaluate-to-10-1

반응형