Рубрики

Как напечатать диапазон основных типов данных без каких-либо библиотечных функций и констант в C?

Как написать код C для печати диапазона основных типов данных, таких как int, char, short int, unsigned int, unsigned char и т. Д.?
Предполагается, что числа со знаком хранятся в форме дополнения 2.

Мы настоятельно рекомендуем свернуть браузер и попробовать это в первую очередь.

Ниже приведены шаги, которые необходимо выполнить для типов данных без знака.
1) Найти количество байтов для данного типа данных с помощью оператора sizeof.
2) Найдите количество бит, умножив результат sizeof на 8.
3) Минимальное значение для типа без знака всегда равно 0 независимо от типа данных.
4) Максимальное значение типа без знака равно (1

// C программа для печати диапазона основных типов данных
#include <stdio.h>

  
// Печатает минимальное и максимальное значение для типа со знаком

void printUnsignedRange(size_t bytes)

{

    int bits = 8*bytes;

  

    // Обратите внимание, что значение 'to' равно "(1 << бит) - 1"

    // Запись в следующем виде не вызывает переполнения

    unsigned int to = ((1 << (bits-1)) - 1) + (1 << (bits-1)) ;

  

    printf(" range is from %u to %u \n", 0, to);

}

  
// Печатает минимальное и максимальное значение для типа без знака

void printSignedRange(size_t bytes)

{

   int bits = 8*bytes;

   int from = -(1 << (bits-1));

   int to =  (1 << (bits-1)) - 1;

   printf(" range is from %d to %d\n", from, to);

}

  

int main()

{

    printf("signed char: ");

    printSignedRange(sizeof(char));

  

    printf("unsigned char: ");

    printUnsignedRange(sizeof(unsigned char));

  

    printf("signed int: ");

    printSignedRange(sizeof(int));

  

    printf("unsigned int: ");

    printUnsignedRange(sizeof(unsigned int));

  

    printf("signed short int: ");

    printSignedRange(sizeof(short int));

  

    printf("unsigned short int: ");

    printUnsignedRange(sizeof(unsigned short int));

  

    return 0;

}

Выход:

signed char:  range is from -128 to 127
unsigned char:  range is from 0 to 255
signed int:  range is from -2147483648 to 2147483647
unsigned int:  range is from 0 to 4294967295
signed short int:  range is from -32768 to 32767
unsigned short int:  range is from 0 to 65535

Обратите внимание, что вышеупомянутые функции не могут быть использованы для float. Кроме того, приведенная выше программа может не работать для типов данных больше, чем int, например, long long int. Мы можем заставить его работать для больших типов, изменив тип данных «на» и «с» на long long int.

Эта статья предоставлена Абхай Рати . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Как напечатать диапазон основных типов данных без каких-либо библиотечных функций и констант в C?

0.00 (0%) 0 votes