2012-07-02 2 views

답변

13

아니요, 이것은 버그가 아닙니다.

첫 번째 인수는 부호없는 정수이지만 실제로는 부호있는 정수를 전달했다고 Format에 말합니다. 부호있는 정수는 부호없는 것으로 해석되고 -100의 부호있는 값의 비트 패턴은 부호가없는 값 4294967196과 같습니다.

실제로 코드에 오류가 있습니다. 형식 문자열은 Format에 대한 인수가 약하게 입력되어 컴파일러가 시행 할 수없는 계약을 정의합니다. 부호없는 값을 전달할 것을 약속 할 때 실제로는 부호없는 값을 전달하는 것은 사용자의 책임입니다. 이 코드의 실수는 문자열이나 부동 소수점 값을 전달하는 것과 논리적으로 동일합니다.이 값은 훨씬 쉽게 인식 할 수있는 오류입니다.

+2

Whoeha, 이것은 나를 잘못 해석 한 것입니다. _unsigned decimal_은 출력이 아닌 입력 유형입니다. – NGLN

+0

@NGLN : Printf 스타일 함수는 그런 식으로 작동합니다. –

관련 문제