понедельник, 23 июля 2012 г.

Objective-C. Переменные и типы данных.

Рассмотрим переменные и типы данных в Objective-C.
В Objective-C прописные и строчные буквы различаются. Это значит, что переменные sum, Sum и SUM будут являться разными переменными. Но для Objective-C не имеет значения, с какого мест строки вы начинаете ввод. Вводить символы можно с любой позиции строки.

Типы данных


picture-10

int: 158, -10, 0, 0xFFEF0Dfloat: 0.3, 125.8, -0.0001, .2
double: 0.0000003, 12843.0323454545
char: 'a', '!', '0'
BOOL: YES, NO
id: объект любого типа (-(id) newObject: (int) type {})

Наиболее часто используются переменные с типом данных float, double и char.

Во время арифметических операций с дробями в данных типа int отбрасывается дробная часть, стоящая после точки, поэтому, чтобы не получить ошибочный ответ, рекомендуется вместо int использовать float.

#import <Foundation/Foundation.h>

int main (int argc, char *argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    int integerVar = 100;
    float floatVar = 331.79;
    double doubleVar = 8.44e+11;
    char charVar = 'W';
    BOOL boolVar = YES;

    NSLog (@"Тип переменной int. Значение переменной равно %i", integerVar);
    NSLog (@"Тип переменной float. Значение переменной равно %f", floatVar);
    NSLog (@"Тип переменной double. Значение переменной равно %e", doubleVar);
    NSLog (@"Тип переменной double. Значение переменной равно %g", doubleVar);
    NSLog (@"Тип переменной char. Значение переменной равно %c", charVar);

    [pool drain];
    return 0;
}

Квалификаторы

 

long - длинная переменная
long long - переменная двойной длины
short - короткая переменная
unsigned - переменная, содержит только положительные числа без знака минус
signed - переменная содержит значение со знаком (ее используют в основном перед объявление типа char)

Квалификаторы используются для расширения типов переменных.
Они необходимы для увеличения объема памяти, занимаемой переменной.

long int numberOfPoints = 13107110L;
long double US_deficit_2004;

long long int maxAllowedStorage;

Базовые типы данных

 

Тип                                Примеры констант                        Символы формата NSLog
char                                'a', '\n'                                               %c
short int                          -                                                        %hi, %hx, %ho
unsigned short int            -                                                        %hu, %hx, %ho
int                                  12, -97, 0xFFE0, 0117                      %i, %x, %o
unsigned int                    12u, 100u, 0XFFu                              %u, %x, %o
long int                           12L, -2001, 0xffffL                            %li, %lx, %lo
unsigned long int             12UL, 100ul, 0xffeeUL                      %lu, %lx, %lo
long long int                    0xe5e5e5e5LL, 500ll                         %lli, %llx, %llo
unsigned long long int     12ull, 0xffeeULL                                 %llu, %llx, %llo
float                               12.34f, 3.1e-5f, 0x1.5p10, 0x1P-1     %f, %e, %g, %a
double                           12.34, 3.1e-5, 0x.1p3                         %f, %e, %g, %a
long double                    12.341, 3.1e-5l                                   %Lf, %Le, %Lg
id                                   nil                                                        %p


Оператор приведения типа ()

 

Оператор приведения типа преобразует значение любого типа в нужный тип переменной.

float f = (float) 100;
int i = (int) 29.55 + (int) 21.99;

Оператор приведения типа часто используется для принудительного приведения объекта типа id к объекту определенного класса.

id myNumber;
Fraction *myFraction;
...
myFraction = (Fraction *) myNumber;

Константы

 

Для констант запрещено изменять значение переменной. Их значение всегда остается постоянным, заданным раз и навсегда.

const double pi = 3.141592654;

Перчисления enum

 

Перечисления позволяют задавать диапазон значений, только который может содержаться в данной переменной.

enum flag {false, true};

Директивы для управления областью действия переменных


Перед переменными при их объявлении в секции @interface можно помещать 4 директивы, чтобы более точно управлять их областью действия.

@protected - методы, определенные в данном классе и любых его подклассах, могут выполнять непосредственный доступ к последующим переменным объекта-экземпляра. Этот вариант работает всегда по умолчанию.

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

@public - методы, определенные в данном классе и любых его подклассах или модулях, могут выполнять непосредственный доступ к последующим переменным объекта-экземпляра.

@package - дла 64-битных образов доступ к переменной объекта-экземпляра может выполняться в любом месте образа, который реализует данный класс.

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

@interface Printer: NSObject
{
/*
Доступ к этим двум переменным нельзя выполнить из любого подкласса класса Printer, поскольку они сделаны частными (@private).
*/

@private
    int pageCount;
    int tonerLevel;

/*
Доступ к последующим переменным доступен для методов подклассов и класса Printer.
*/

@protected
    // Все другие переменные.
}
@end;

Глобальные переменные


Глобальные переменные записываются вне любого метода, класса или функции. Их значения можно использовать из любого места данного модуля.
Обычно принято использовать начальную букву g в именах глобальных переменных для их выделения.

int gMoveNumber = 0;

Глобальные переменные доступны для кода из других файлов вашей программы.

Чтобы переменная была глобальной только внутри одного файла и недоступна для кода в других файлах, перед ее объявлением вне методов и функций ставится слово static.

static inr gMoveNumber = 0;

В данном разделе мы рассмотрели основные переменные и типы данных в Objective-C. Вы можете использовать данную информацию в качестве справочного материала. 

Комментариев нет:

Отправить комментарий