2012-11-28 1 views
0

를 사용하여 숯불하기 문자의 값을 표시합니다.int를 변환하면 다음 내가에 다음을 수행해야합니다 궁금 위에서,</p> <pre><code>#include <stdio.h> int main() { int x = 500; printf("%hhdn", x); } </code></pre> <p>또한 문자로 표시 INT로 변환하는 올바른 방법이 있다면 난 그냥 궁금 해서요의 printf

#include <stdio.h> 

int main() 
{ 
    char c = 'a'; 
    printf("%hhd\n", c); 
} 

아니면 그냥 printf("%d\n", c);이 좋을까요? 그래서 기본적으로 캐스팅없이 printf를 통해 정수의 첫 번째 바이트를 출력하려고합니다. 첫 번째 예에서 사용

답변

4

%hhd은 인쇄하기 전에 그것이 char에 전달되는 int을 변환 printf() C99 호환을 강제합니다. 문자의 서명 여부에 따라 244 또는 -12가 인쇄 된 값으로 표시 될 수 있습니다. 이것이 인쇄하기위한 '정확한'방법인지는 논쟁의 여지가 있습니다. 아마 그렇지 않을 것이다. 문자를 인쇄하는 일반적인 방법은 %c입니다. 하나의 이슈는 문자로 표현되어야 할 문자 인 500입니다. 그 값은 char, signed char 또는 unsigned char 유형의 범위를 벗어납니다 (거의 모든 플랫폼에서). 유니 코드 문자 또는 다른 와이드 문자 값인 경우 와이드 문자 서식 지정 변 환인 wprintf()을 사용해야 할 수도 있습니다.

%c 형식과 일반 char'a'을 사용하는 두 번째 예는 정상적으로 작동하며 일반적인 것입니다. 그러면 문자 'a'가 인쇄됩니다. %hhd을 사용하는 경우에도 작동하며 일반적으로 97을 인쇄합니다 (다른 값을 얻으려면 특이한 컴퓨터를 사용해야합니다).

+0

@Johathan : 나는 캐릭터하지만 정수의 첫 번째 바이트의 값을 출력하는 '%의 c'를 사용하지 않습니다. – user963241

+0

@ user963241'x & 0xFF'? 아니면 비트 마스킹도 금지되어 있습니까? –

+0

@DanielFischer : 네, 그렇게하는 것이 한 가지 방법 일 것입니다. 나는'printf'를 사용하여 변환을 처리 할 수 ​​있을지 궁금합니다. – user963241

1
#include <stdio.h> 

int main() 
{ 
    int x = 500; 
    printf("%hhu\n", x); 
} 

이 값은 244입니다.

500 = 00000001 11110100

244 = 11110100

+0

이 방법이 효과적이지만 일반적으로 코드의 의도가 무엇인지 명확히하는 것이 가장 좋습니다. 일반적으로 형식 변환을 자동으로 처리하는 printf()를 사용하는 대신 명시 적 변환을 사용하는 것이 좋습니다. – DevNull

+0

PC-Lint와 같은 도구를 추가하면이 오류가 발생합니다. – DevNull