Рассмотрим переменные и типы данных в Objective-C.
В Objective-C прописные и строчные буквы различаются. Это значит, что переменные sum, Sum и SUM будут являться разными переменными. Но для Objective-C не имеет значения, с какого мест строки вы начинаете ввод. Вводить символы можно с любой позиции строки.
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 - переменная двойной длины
short - короткая переменная
unsigned - переменная, содержит только положительные числа без знака минус
signed - переменная содержит значение со знаком (ее используют в основном перед объявление типа char)
Квалификаторы используются для расширения типов переменных.
Они необходимы для увеличения объема памяти, занимаемой переменной.
long int numberOfPoints = 13107110L;
long double US_deficit_2004;
long long int maxAllowedStorage;
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 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. Вы можете использовать данную информацию в качестве справочного материала.
В Objective-C прописные и строчные буквы различаются. Это значит, что переменные sum, Sum и SUM будут являться разными переменными. Но для Objective-C не имеет значения, с какого мест строки вы начинаете ввод. Вводить символы можно с любой позиции строки.
Типы данных

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. Вы можете использовать данную информацию в качестве справочного материала.
Комментариев нет:
Отправить комментарий