Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Нейбауэр А. Моя первая программа на С.doc
Скачиваний:
182
Добавлен:
02.05.2014
Размер:
3.75 Mб
Скачать

Типыданныхи операторы

Как правило, при выполнении математических расчетов по обе стороны от знака равенства используют данные одного типа. Например, если складывают два числа типа float, тип переменной, которой присваивают результат, тоже должен быть определен как float. Это показано в следующем примере:

main()

{

float cost, shipping, total;

cost = 56.09;

shipping = 4.98;

total = cost + shipping;

printf("Общая стоимость составляет сумму %.2f \

долларов", total);

}

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

Общая стоимость составляет сумму 61.07 долларов

Можно использовать и данные разных типов в правой и левой частях выражения. Отображаемое на экране значение будет определяться в зависимости от типа переменной в левой части выражения. Для примера приведен слегка измененный вариант той же программы:

main()

{

int total;

float cost, shipping;

cost = 56.09;

shipping = 4.98;

total = cost + shipping;

printf("Общая стоимость составляет сумму %d долларов", total);

}

В операции сложения участвуют две переменные типа float (cost и shipping), но полученный результат присваивается целочисленной переменной total. Если сложить эти числа на калькуляторе, то в результате получим 61.07, но так как переменная total — целочисленная, то и результат будет преобразован в целое число. Использование указателя формата %d задает отображение на экране целого числа 61.

Рис. 6.3. Математические операции выполняются до того, как данные преобразуются к заданному типу переменной

Обратите внимание, вначале выполняется математическое действие, а затем происходит присваивание значения (рис.6.3). Если бы заданные значения преобразовывались в целые числа до их сложения, то результат оказался бы равен 60 (56+4).

Можно складывать два целых числа, определив сумму как float:

main()

{

int cost, shipping;

float total;

cost = 56;

shipping = 4;

total = cost + shipping;

printf("Общая стоимость составляет сумму %.2f \

долларов", total);

}

В этом случае, в соответствии с типом переменной total и указателем формата %f, результат сложения будет представлен числом с плавающей точкой. Но вследствие того, что оба слагаемых являлись целыми числами, в десятичной части будут проставлены нули — 60.00.

Данные float и int можно объединять и в правой части уравнения, причем в случае сложения и вычитания полученные результаты будут отображаться в соответствии с заданным типом переменной в левой части. Посмотрите на следующую программу:

main()

{

int shipping;

float total, cost;

cost = 56.09;

shipping = 4;

total = cost + shipping;

printf("Общая стоимость составляет сумму \

%.2f долларов", total);

}

Здесь выполняется сложение двух переменных типа int и float, с последующим отображением полученного результата в виде значения типа foat (60.09).

Аналогичные правила соблюдаются и при выполнении деления. Но имейте в виду: если вы хотите, чтобы переменная, содержащая результат деления и определенная как float, имела значимые цифры в десятичной части, необходимо, чтобы хотя бы у одного из участвующих в делении чисел (литералов) также имелась дробная часть. На рис.6.4 продемонстрировано, как одно и то же действие выполняется трижды. Каждый раз результат деления определен как тип float. Однако в первом случае ни одно из чисел не имеет знаков после точки, так что при отображении результата в десятичной части стоят нули.

Рис. 6.4. Деление литералов