|
Программирование >> Элементы языков с и с++
Листинг 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>. Перед каждым следующим шагом проверьте содержимое переменных. Понаблюдайте, как изменились значения переменных.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |