문제
형식 지정자가 있습니까? sprintf
C에서 매핑하는 char
같은 방법으로 16 진수 %x
지도를 작성하다 int
16진수로?
해결책
예 및 아니오.
sprintf
는 변수 인수 목록을 취하기 때문에 sprintf
가 수신하기 전에 모든 인수가 기본 홍보를받습니다. 이는 sprintf
가 결코 을 의미합니다. char
를 수신합니다. - char
는 int
를 받기 전에 sprintf
가 short
로 승격됩니다 (및 sprintf
ill as int
).
yes, %x
가 char
가 될 것이므로 short
를 사용하여 hex 형식으로 변환 할 수 있으며, 그 값이 int
, %2.2x
또는 char
로 시작하는지 여부와 동일 할 수 있습니다. 각 입력에 대해 2자를 인쇄하려는 경우 (종종 발생하는 경우) int
를 사용할 수 있습니다.
하나의 점을 조심하십시오 : -1
가 서명되고 음수 값으로 시작하면 Promence ffff
에 대한 프로모션은 일반적으로 이 동일한 비트 패턴이 될 것과 동일한 숫자 값을 생성합니다. 원래의 char로 (예를 들어, int
가 16 비트, int가 32 비트이면, ffffffff
가 64 비트 인 경우, ffffffffffffffff
(일반적인 2의 보수 표현을 위해 일반적인 2의 보수 표현을 가정하면 int
) 서명 된 정수).
다른 팁
똑같습니다 %x
.모두 char
값은 다음과 같이 변환됩니다. int
전달되기 전에 sprintf
(또는 다양한 수의 매개변수를 취하는 다른 함수).
printf("%x\n", 'a');
인쇄물 61