SHRT_MIN в C в шестнадцатеричном формате - PullRequest
0 голосов
/ 05 августа 2020

Я хотел отображать самые высокие и самые низкие «короткие» значения в виде шестнадцатеричных чисел (используя среду Windows, компилятор mingw64):

printf("largest %x and smallest %x",SHRT_MAX,SHRT_MIN)

Результат был таким, как ожидалось для максимального числа -> 7fff, но для минимального числа результат будет -> ffff 8000

Кто-нибудь знает, почему минимальное число отображается как 4-байтовое.

Спасибо за вашу помощь, Берт

1 Ответ

0 голосов
/ 05 августа 2020

Вот

#include <stdio.h>
#include <limits.h>

int main(void) 
{
    printf( "largest %#hx and smallest %#hx\n", SHRT_MAX, SHRT_MIN );
    
    return 0;
}

Результат программы:

largest 0x7fff and smallest 0x8000

То есть вам нужно использовать модификатор длины h. В противном случае из-за целочисленных рекламных акций значения выводятся как объекты типа int.

...