Программирование >>  Элементы языков с и с++ 

1 ... 26 27 28 [ 29 ] 30 31 32 ... 200


Листинг 6.1

int tmain() {

enum days {sun, mon, tues, wed, thur, fri, sat}anyday;

enum sex {man, wom}pol;

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

tinain ()

int i=-10;

unsigned int j=i;

Вы убедитесь, что число j огромно. И все из-за того, что знаковый разряд, в котором была единица (т. к. число в переменной i отрицательное), стал участвовать в величине числа - стал его неотъемлемой частью;

□ unsigned int - аналогичен ТИПу unsigned char;

□ unsigned long - длинное целое без знака. Последствия того, что переменная имеет тип без знака , для отрицательных чисел уже рассмотрены.

Кроме того, существуют также следующие типы данных:

□ enum - так называемый перечислимый тип данных. Он позволяет задавать мнемонические значения для множеств целых значений (т. е. обозначать значения в соответствии с их смыслом). Допустим, нам надо работать в программе с наименованиями дней недели (например, проверять, что текущий день - понедельник). Пока не было типа данных enum, надо было как-то задавать дни недели числами и работать с этими числами. Для дней недели это и не особенно сложно: каждый помнит, что седьмой день это воскресенье, а первый - понедельник (хотя в английском варианте первым днем считается как раз воскресенье). Но бывают множества, как говорят, и покруче , чем дни недели, элементы которых не упомнишь. Поэтому с помощью типа enum можно добиться большей наглядности и лучшего понимания программы. Приведем пример программы с использованием типа enum (листинг 6.1).



Запись enum days {sun, mon, tues, wed, thur, fri, sat} anyday

пример объявления переменной days перечислимого.типа. Все, что в фигурных скобках, - это заданные заранее значения переменной days. Сама переменная days задает как бы шаблон, который самостоятельно применять нельзя: это обычный тип данных. Следует объявить дополнительно другую переменную этого типа: ее имя можно записать сразу при объявлении шаблона между последней фигурной скобкой и двоеточием (у нас это переменная anyday). Можно было бы записать объявление так:

enum days {sun, mon, tues, wed, thur, fri, sat}; ввели тип days anyday,otherdays; объявили 2 переменные данного типа

В любом случае после этого переменной anyday (или, как во втором случае, и переменной otherdays) можно присваивать значения из определенного в переменной enum списка:

anyday=sun; ,

Если список приведен В виде enum days {sun, mon, tues, wed, thur,

fri, sat}, TO подразумевается, что его элементы имеют последовательные целые числовые значения: О, 1, 2,... (т. е. вместо anyday==sun можно писать anyday==o). Список, указанный в enum, можно при объявлении инициализировать другими целыми значениями. Например, имеем перечислимый тип кувшины (объемы в литрах) : enum {Voll=5, Vol2=7, Vol3=9,Vol4,Vol5,Vol6} pitchers;

У первого, второго и третьего элементов этого множества числовые значения соответственно равны 5, 7 и 9. Остальным элементам, неопределенным нами, компилятор присвоит последовательные (через единицу) значения, начиная со значения последнего определенного элемента (т. е. с Vols): vol4 получит значение vol3+l (т. е. 10), vols - 11, vol6 - 12.

В приведенной выше программе заданы две переменные перечислимого типа: days (дни) и sex (пол). Это пока шаблоны. А на их основе определены собственно рабочие перечислимые переменные (т. е. те. с которыми и надо работать). Затем определенным таким образом переменным

anyday=sun; pol=wom;

if(anyday==0 SS pol - worn) /*можно писать либо anyday==sun, либо anyday==0; */



I Листинг 6.2

int tmain() {

проверка преобразований типов int,float в bool int i=2; bool b=i; float j=2.2; bool a=bool(j); j=0.0; a=bool(j);

можно присваивать значения элементов перечислимых множеств и сравнивать их.

П bool - этот тип заимствован из языка С++ (расширения С). Переменные этого типа могут принимать только два значения: false (ложь) и true (истина). Они используются для проверки логических выражений. Числовые значения false (ложь) и true (истина) заранее предопределены: значение false численно равно нулю, а значение true- единице. Эти так называемые литералы (постоянные символьные значения) сами выступают в роли переменных - им можно присваивать значения (соответственно, нуль и единицу).

Вы можете преобразовать некоторую переменную типа bool в некоторую переменную типа int. Такое числовое преобразование устанавливает значение false равным нулю, а значение true - единице.

Вы можете преобразовать перечислимые и арифметические типы в переменные типа bool: нулевое значение преобразовывается в false, а ненулевое - в true.

Сушествует одноименная функция bool (), которая преобразует арифметические типы в булевы. В листинге 6.2 приведен пример программы с использованием булевых переменных и булевой функции. Поставьте с помощью отладчика точку останова на первом операторе и двигайтесь по программе пошагово, каждый раз нажимая клавишу <F10>. Перед каждым следующим шагом проверьте содержимое переменных. Понаблюдайте, как изменились значения переменных.



1 ... 26 27 28 [ 29 ] 30 31 32 ... 200

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика