2012-09-20 2 views
1

printf("%c ", 2293552);0으로 인쇄됩니까?% c와 ASCII 코드가 혼동 됨

ASCII 값은 0에서 127까지입니다. 이것은 순환적인 것이어야한다는 것을 알고 있지만 명확한 설명이 필요합니다. 고마워요

답변

3

숫자 22935520x22ff30에 해당합니다. printf을 ASCII로 해석하면 '0'의 코드 인을 포함하는 마지막 8 비트를 제외한 모든 비트가 무시됩니다. C99 표준에서

:

7.19.1.6.8

- %c : 더 l 길이 수정이 없으면, int 인수는 unsigned char로 변환되고, 그 결과 문자가 기록됩니다.

+0

하아! 당신은 나를 때려 눕히지 만 표준 견적으로 당신을 이겼습니다 : D (10k 만) –

+0

감사합니다. 그리고 추가 지원 정보에 대해 다시 한번 감사드립니다. –

+0

@ 대니얼 피셔 오 예, 보았습니다. – dasblinkenlight

0

가능성 있음 %c은 인수의 하위 바이트 인 2293552 & 255 = 48 = '0'만을 사용하고 있습니다.

+0

감사합니다! 그것은 이해할 수있었습니다. –