Format('%u', [-100])
의 결과가 '4294967196'
인 이유는 무엇입니까? 나는 이것을 D7과 XE2에서 테스트했다. '% u'를 사용하여 서식을 음수로 지정하면 왜 잘못된 값이 인쇄됩니까?
Format
기능에 documentation
퍼센트 U 부호없는 소수. % d와 (과) 비슷하지만 부호가 출력되지 않습니다.
따라서 결과는 '100'
일 것으로 예상됩니다.
이것은 버그입니까?
Format('%u', [-100])
의 결과가 '4294967196'
인 이유는 무엇입니까? 나는 이것을 D7과 XE2에서 테스트했다. '% u'를 사용하여 서식을 음수로 지정하면 왜 잘못된 값이 인쇄됩니까?
Format
기능에 documentation
퍼센트 U 부호없는 소수. % d와 (과) 비슷하지만 부호가 출력되지 않습니다.
따라서 결과는 '100'
일 것으로 예상됩니다.
이것은 버그입니까?
아니요, 이것은 버그가 아닙니다.
첫 번째 인수는 부호없는 정수이지만 실제로는 부호있는 정수를 전달했다고 Format
에 말합니다. 부호있는 정수는 부호없는 것으로 해석되고 -100의 부호있는 값의 비트 패턴은 부호가없는 값 4294967196
과 같습니다.
실제로 코드에 오류가 있습니다. 형식 문자열은 Format
에 대한 인수가 약하게 입력되어 컴파일러가 시행 할 수없는 계약을 정의합니다. 부호없는 값을 전달할 것을 약속 할 때 실제로는 부호없는 값을 전달하는 것은 사용자의 책임입니다. 이 코드의 실수는 문자열이나 부동 소수점 값을 전달하는 것과 논리적으로 동일합니다.이 값은 훨씬 쉽게 인식 할 수있는 오류입니다.
Whoeha, 이것은 나를 잘못 해석 한 것입니다. _unsigned decimal_은 출력이 아닌 입력 유형입니다. – NGLN
@NGLN : Printf 스타일 함수는 그런 식으로 작동합니다. –