문제

형식 지정자가 있습니까? sprintf C에서 매핑하는 char 같은 방법으로 16 진수 %x 지도를 작성하다 int 16진수로?

도움이 되었습니까?

해결책

예 및 아니오.

sprintf는 변수 인수 목록을 취하기 때문에 sprintf가 수신하기 전에 모든 인수가 기본 홍보를받습니다. 이는 sprintf 결코 을 의미합니다. char를 수신합니다. - charint를 받기 전에 sprintfshort로 승격됩니다 (및 sprintf ill as int).

yes, %xchar가 될 것이므로 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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top