Переменные Objective-C
Переменная - это не что иное, как имя, присвоенное области памяти, которой могут управлять наши программы. Каждая переменная в Objective-C имеет определенный тип, который определяет размер и структуру памяти переменной; диапазон значений, которые можно сохранить в этой памяти; и набор операций, которые можно применить к переменной.
Имя переменной может состоять из букв, цифр и символа подчеркивания. Он должен начинаться либо с буквы, либо с подчеркивания. Прописные и строчные буквы различны, потому что Objective-C чувствителен к регистру. Основываясь на основных типах, описанных в предыдущей главе, будут следующие основные типы переменных:
Sr. No. | Тип и описание |
---|---|
1 | char Обычно один октет (один байт). Это целочисленный тип. |
2 | int Самый естественный размер целого числа для машины. |
3 | float Значение с плавающей запятой одинарной точности. |
4 | double Значение с плавающей запятой двойной точности. |
5 | void Представляет отсутствие типа. |
Язык программирования Objective-C также позволяет определять различные другие типы переменных, которые мы рассмотрим в следующих главах, таких как Enumeration, Pointer, Array, Structure, Union и т. Д. В этой главе давайте изучим только основные типы переменных.
Определение переменной в Objective-C
Определение переменной означает указание компилятору, где и сколько создать хранилище для переменной. Определение переменной указывает тип данных и содержит список из одной или нескольких переменных этого типа следующим образом:
type variable_list;
Вот, type должен быть допустимым типом данных Objective-C, включая char, w_char, int, float, double, bool или любой пользовательский объект и т. д., и variable_listможет состоять из одного или нескольких имен идентификаторов, разделенных запятыми. Здесь показаны некоторые действительные декларации -
int i, j, k;
char c, ch;
float f, salary;
double d;
Линия int i, j, k;оба объявляют и определяют переменные i, j и k; который инструктирует компилятор создать переменные с именами i, j и k типа int.
Переменные могут быть инициализированы (присвоено начальное значение) в их объявлении. Инициализатор состоит из знака равенства, за которым следует постоянное выражение:
type variable_name = value;
Некоторые примеры -
extern int d = 3, f = 5; // declaration of d and f.
int d = 3, f = 5; // definition and initializing d and f.
byte z = 22; // definition and initializes z.
char x = 'x'; // the variable x has the value 'x'.
Для определения без инициализатора: переменные со статической продолжительностью хранения неявно инициализируются NULL (все байты имеют значение 0); начальное значение всех остальных переменных не определено.
Объявление переменной в Objective-C
Объявление переменной обеспечивает компилятору гарантию того, что существует одна переменная с данным типом и именем, так что компилятор приступит к дальнейшей компиляции, не требуя полной информации о переменной. Объявление переменной имеет значение только во время компиляции, компилятору требуется фактическое объявление переменной во время компоновки программы.
Объявление переменной полезно, когда вы используете несколько файлов и определяете переменную в одном из файлов, который будет доступен во время связывания программы. Вы будете использоватьexternключевое слово для объявления переменной в любом месте. Хотя вы можете объявлять переменную несколько раз в своей программе Objective-C, но она может быть определена только один раз в файле, функции или блоке кода.
пример
Попробуйте следующий пример, где переменные были объявлены вверху, но они были определены и инициализированы внутри основной функции:
#import <Foundation/Foundation.h>
// Variable declaration:
extern int a, b;
extern int c;
extern float f;
int main () {
/* variable definition: */
int a, b;
int c;
float f;
/* actual initialization */
a = 10;
b = 20;
c = a + b;
NSLog(@"value of c : %d \n", c);
f = 70.0/3.0;
NSLog(@"value of f : %f \n", f);
return 0;
}
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
2013-09-07 22:43:31.695 demo[14019] value of c : 30
2013-09-07 22:43:31.695 demo[14019] value of f : 23.333334
Та же концепция применяется к объявлению функции, где вы указываете имя функции во время ее объявления, а ее фактическое определение может быть дано где угодно. В следующем примере это объясняется с использованием функции C, и, как вы знаете, Objective-C также поддерживает функции стиля C:
// function declaration
int func();
int main() {
// function call
int i = func();
}
// function definition
int func() {
return 0;
}
L-значения и R-значения в Objective-C
В Objective-C есть два вида выражений:
lvalue- Выражение, относящееся к области памяти, называется выражением «lvalue». Lvalue может отображаться как левая или правая часть присваивания.
rvalue- Термин rvalue относится к значению данных, которое хранится по некоторому адресу в памяти. Rvalue - это выражение, которому не может быть присвоено значение, что означает, что rvalue может появляться справа, но не слева от присваивания.
Переменные - это lvalue, поэтому они могут появляться в левой части присваивания. Числовые литералы являются r-значениями, поэтому не могут быть присвоены и не могут отображаться с левой стороны. Ниже приводится действительное заявление -
int g = 20;
Но следующее не является допустимым заявлением и приведет к ошибке времени компиляции:
10 = 20;