Как я могу получить размеры различных типов в с? - PullRequest
0 голосов
/ 15 марта 2010

Хотелось бы узнать размеры следующих типов в C ,

sizeof(int), sizeof(float), sizeof(double), sizeof(char), sizeof(167), sizeof(3.1415926) и sizeof(‘$’).

Ответы [ 4 ]

3 голосов
/ 15 марта 2010

Конечно. Вы можете использовать следующий код. Я отвечаю на C, потому что это вопрос, который задают, несмотря на тег C #. Если вы действительно хотите C #, кто-то еще должен помочь.

#include <stdio.h>
int main (void) {
    // Use %zu for size_t if your compiler supports it.
    printf("sizeof(int)       = %d\n",sizeof(int));
    printf("sizeof(float)     = %d\n",sizeof(float));
    printf("sizeof(double)    = %d\n",sizeof(double));
    printf("sizeof(char)      = %d\n",sizeof(char));
    printf("sizeof(167)       = %d\n",sizeof(167));
    printf("sizeof(3.1415926) = %d\n",sizeof(3.1415926));
    printf("sizeof('$')       = %d\n",sizeof('$'));
    return 0;
}

Это выводит (в моей системе):

sizeof(int)       = 4
sizeof(float)     = 4
sizeof(double)    = 8
sizeof(char)      = 1
sizeof(167)       = 4
sizeof(3.1415926) = 8
sizeof('$')       = 4

Имейте в виду, что это дает вам значения в байтах, которые в соответствии со стандартом C составляют , а не , обязательно 8 бит Вы должны проверить CHAR_BITS из limits.h, чтобы увидеть, сколько битов в байте.

1 голос
/ 15 марта 2010

Что-то вроде

#include <stdio.h>

int main()
{
    printf("sizeof(int) = %ul\n", (unsigned long) sizeof(int));
}

с большим количеством похожих строк. Сохраните, скомпилируйте и запустите.

Одна распространенная ошибка - printf("sizeof(int) = %d", sizeof(int));, но это несоответствие. Результат sizeof() равен size_t, который является целым типом без знака, который достаточно большой, чтобы вместить любой возможный размер объекта. Спецификатор %d запрашивает int, который является целочисленным типом со знаком, который удобен для вычисления. Не так уж редко size_t может быть больше int, и тогда вы передаете аргументы такого размера, которого функция не ожидает, и это может быть плохо.

0 голосов
/ 17 марта 2010

Я не работаю над C последние три года. Но вот ответ на ваш вопрос. Вы можете распечатать размер различных типов данных следующим образом:

printf ("Размер целого числа:% ul", sizeof (int));

printf («Размер с плавающей точкой:% ul», sizeof (с плавающей точкой));

printf («Размер двойной:% ul», sizeof (double));

printf ("Размер символа:% ul", sizeof (char));

printf («Размер 167:% ul», sizeof (167));

printf («Размер 3.1415926:% ul», sizeof (3.1415926));

printf ("Размер целого числа:% ul", sizeof (‘$’));

Просто вставьте над строкой printf в вашей программе. Вы получите размер типов данных.

Здесь sizeof () - это функция, которая возвращает общий объем памяти, необходимый для хранения этого типа данных или литерала.

0 голосов
/ 15 марта 2010

Если это консольное приложение, вы можете использовать writeline, который берет строку и отображает ее:

Console.WriteLine(sizeof(int));
Console.WriteLine(sizeof(int));
Console.WriteLine(sizeof(float));
Console.WriteLine(sizeof(double));
Console.WriteLine(sizeof(char));
Console.WriteLine(sizeof (167));
Console.WriteLine(sizeof(3.1415926));
Console.WriteLine(sizeof(‘$’));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...