Выбрать главу

{

    printf(" Данные типа int занимают %d байта. \n", sizeof (int));

    printf(" Данные типа char занимают %d байт.\n", sizeof (char));

    printf(" Данные типа long занимают %d байта.\n", sizeof (long));

    printf(" Данные типа double занимают %d байт.\n", sizeof (double));

}

     В языке Си имеется встроенная операция sizeof, которая позволяет определить размер объектов в байтах.

     Мы определили размеры данных только четырех типов, но вы легко можете модифицировать эту программу и найти размер объекта любого другого интересующего вас типа.

ИСПОЛЬЗОВАНИЕ ТИПОВ ДАННЫХ

     Во время разработки программы вам необходимо составить список требуемых переменных и указать при этом, какого они должны быть типа. Скорее всего вы будете использовать тип int или, возможно, float для определения чисел и тип char для символов. Описывайте эти данные в самом начале тела функции, в которой они используются. Имена переменных выбирайте таким образом, чтобы они указывали на их смысл. При инициализации переменной следите за тем, чтобы тип константы соответствовал типу переменной.

int apples = 3; /* ПРАВИЛЬНО */

int oranges = 3.0; /* НЕПРАВИЛЬНО */

     Язык Си "рассматривает" такие несоответствия менее жестко, чем, скажем, Паскаль, но в любом случае лучше учиться избегать дурных привычек.

ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ

     В данной главе мы рассмотрели довольно большой материал. Суммируя его, мы обратим основное внимание на практическую сторону тех вопросов, которые здесь обсудили. Так же как и в предыдущей главе, мы дадим краткие примеры. Ниже приводится сводка тех фактов, которые вы должны были узнать из этой главы.

Что такое основные типы данных языка Си: int, short, long, unsigned, char, float, double.

Как описать переменную любого типа: int beancount, float root-beer; и т. д.

Как зависать константу типа int: 256, 023, OXF5 и т. д.

Как записать константу типа char: 'r', 'U', '\007', '?' и т. д.

Как записать константу типа float: 14,92, 1.67е-27 и т. д.

Что такое слова байты и биты.

В каких случаях используются различные типы данных.

ВОПРОСЫ И ОТВЕТЫ

     Рассмотрение приводимых ниже вопросов должно помочь вам глубже УСВОИТЬ материал данной главы.

Вопросы

1. Какими типами вы будете пользоваться при обработке данных следующего вида

     а. Население Рио Фрито

     б. Средний вес картины Рембрандта

     в. Наиболее часто встречающаяся буква в тексте данной главы

     г. Сколько раз указанная буква встречается в тексте

2. Определите тип и смысл (если он есть) каждой из следующих констант

     а. '\b'

     б. 1066

     в. 99 44

     г. OXAA

     д. 20е30

3. Вирджила Анн Ксенопод (ВАКС) написала программу с множеством ошибок Помогите ей обнаружить их:

#include < stdio h>

main

(

            float g, h,

            float tax, rate,

            g = e21, tax = rate*g,

)

Ответы

1.   a. int, возможно short, население выражается целым числом

     б. float, маловероятно, что среднее окажется целым числом

     в. char

     г. int, возможно unsigned

2.   a. char, символ "шаг назад"

     б. int, историческая дата

     в. float, степень чистоты после мытья

     г. Шестнадцатеричное число типа int, десятичное значение 170

     д. float, масса Солнца в кг

3.   Строка 1: правильная

     Строка 2: должна содержать пару круглых скобок вслед за именем main, т. е. main( )

     Строка 3: нужно использовать {, а не (

     Строка 4: g и h должны разделяться запятой, а не точкой с запятой

     Строка 5: правильная

     Строка 6: (пустая) правильная

     Строка 7: перед е должна стоять по крайней мере одна цифра: например, 1е21 или 1 0е21

     Строка 8: правильная

     Строка 9: нужно использовать }, а не )

Недостающие строки:

     первая - переменной rate нигде не присваивается значеиие.

     вторая - переменная h нигде не используется.

4. Символьные строки директива #define, функции printf( ) и scanf( ) 

  В этой главе мы продолжим нашу "игру" с данными покопаемся в вопросах, выходящих за пределы тех, которые были связаны с типами данных, и рассмотрим символьную строку Сначала опи шем важное средство языка - препроцессор Си - и узнаем, как задавать и использовать символические константы. Затем вновь об судим способы ввода и вывода данных, при этом более полно ис следуем возможности функций printf( ) и scanf( ). Ну, а теперь вы вероятно, ожидаете примера программы, который должен быть помещен в начале главы; мы не будем вас разочаровывать и приведем его:

/* непринужденный разговор */

# define DENSITY 62 4  /* плотность тела человека в фунтах на кубический фут */

main( )  /* любопытствующая программа*/

{

  float weight, volume;

  int size, letters;

  char name [40];   /* или попробуйте "static char name [40], */

  printf(" Привет! Как вас зовут?\n" );

  scanf(" %s" , name);

  printf("%s,  Каков ваш вес в фунтах?\n", name);

  scani("%f", &weight);

  size = sizeof name;

  letters = strlen (name);

  volume = weight/DENSITY;

  printf(" Прекрасно, %s, ваш объем %2 2f кубических фута.\n", name, volume);

  printf(" Кроме того, ваше имя состоит из %d букв,\n", letters);

  printf(" и для его размещения в памяти у нас есть %d байт.\n", size);

}

Результат работы программы "непринужденный разговор" может, например, выглядеть следующим образом: