Confusion about Converting uint8 to int8
Question:
The following 반면에 다음 코드에서는 형식 변환을 할당 후 연기하면 오류가 발생하지 않습니다.
<code class="go">package main func main() { a := int8(0xfc) // compile error: constant 252 overflows int8 _ = a }</code>
이 두 코드의 차이점은 무엇입니까? 또한 첫 번째 코드가 컴파일 오류가되는 이유는 무엇입니까?
<code class="go">package main func main() { a := 0xfc b := int8(a) // ok _ = b }</code>
Answer:
첫 번째 코드는 int8 형식으로 변환하기 전에 상수 0xfc를 평가합니다. 0xfc는 uint8에 맞는 값이지만 int8에는 맞지 않습니다. 따라서 컴파일러는 "constant 252 overflows int8" 오류를 생성합니다.
제 2 코드에서는, 대입이 행해진 후에 형태 변환이 행해집니다. 이것에 의해, a 는 uint8 형으로서 평가되어 그 후 int8 형으로 변환됩니다. 따라서 오류는 발생하지 않습니다.결론:
uint8 을 int8 로 변환하는 경우, 변환하기 전에 정수의 값이 int8 의 범위내인 것을 확인할 필요가 있습니다. 그렇지 않으면 컴파일 오류가 발생합니다.
위 내용은 uint8 상수를 int8로 변환하면 컴파일 오류가 직접 발생하지만 할당 후 변환이 완료되면 작동하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!