Константы Objective-C
Константы относятся к фиксированным значениям, которые программа не может изменять во время выполнения. Эти фиксированные значения также называютсяliterals.
Константы могут иметь любой из основных типов данных, например целочисленную константу, константу с плавающей запятой, символьную константу или строковый литерал . Также есть константы перечисления.
В constants обрабатываются так же, как обычные переменные, за исключением того, что их значения не могут быть изменены после их определения.
Целочисленные литералы
Целочисленный литерал может быть десятичной, восьмеричной или шестнадцатеричной константой. Префикс определяет основание или основание системы счисления: 0x или 0X для шестнадцатеричного числа, 0 для восьмеричного и ничего для десятичного.
Целочисленный литерал также может иметь суффикс, который представляет собой комбинацию U и L для unsigned и long соответственно. Суффикс может быть в верхнем или нижнем регистре и может быть в любом порядке.
Вот несколько примеров целочисленных литералов -
212 /* Legal */
215u /* Legal */
0xFeeL /* Legal */
078 /* Illegal: 8 is not an octal digit */
032UU /* Illegal: cannot repeat a suffix */
Ниже приведены другие примеры различных типов целочисленных литералов.
85 /* decimal */
0213 /* octal */
0x4b /* hexadecimal */
30 /* int */
30u /* unsigned int */
30l /* long */
30ul /* unsigned long */
Литералы с плавающей точкой
Литерал с плавающей запятой имеет целую часть, десятичную точку, дробную часть и экспоненциальную часть. Вы можете представлять литералы с плавающей запятой в десятичной или экспоненциальной форме.
При представлении с использованием десятичной формы вы должны включать десятичную точку, показатель степени или и то, и другое, а при представлении с использованием экспоненциальной формы необходимо включать целую часть, дробную часть или и то, и другое. Знаковая экспонента вводится буквами e или E.
Вот несколько примеров литералов с плавающей запятой -
3.14159 /* Legal */
314159E-5L /* Legal */
510E /* Illegal: incomplete exponent */
210f /* Illegal: no decimal or exponent */
.e55 /* Illegal: missing integer or fraction */
Константы символов
Символьные литералы заключаются в одинарные кавычки, например, 'x', и могут храниться в простой переменной char тип.
Символьный литерал может быть простым символом (например, 'x'), escape-последовательностью (например, '\ t') или универсальным символом (например, '\ u02C0').
В C есть определенные символы, когда они начинаются с обратной косой черты, они будут иметь особое значение и используются для обозначения новой строки (\ n) или табуляции (\ t). Здесь у вас есть список некоторых таких кодов escape-последовательностей -
Последовательность выхода | Имея в виду |
---|---|
\\ | \ персонаж |
\ ' | ' персонаж |
\ " | " персонаж |
\? | ? персонаж |
\ а | Оповещение или звонок |
\ b | Backspace |
\ f | Подача формы |
\ п | Новая линия |
\р | Возврат каретки |
\ т | Горизонтальная вкладка |
\ v | Вертикальная табуляция |
\ ооо | Восьмеричное число от одной до трех цифр |
\ ххх. . . | Шестнадцатеричное число из одной или нескольких цифр |
Ниже приведен пример, показывающий несколько символов escape-последовательности.
#import <Foundation/Foundation.h>
int main() {
NSLog(@"Hello\tWorld\n\n");
return 0;
}
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
2013-09-07 22:17:17.923 demo[17871] Hello World
Строковые литералы
Строковые литералы или константы заключаются в двойные кавычки "". Строка содержит символы, похожие на символьные литералы: простые символы, escape-последовательности и универсальные символы. Вы можете разбить длинную строку на несколько строк, используя строковые литералы и разделяя их пробелами.
Вот несколько примеров строковых литералов. Все три формы - одинаковые струны.
"hello, dear"
"hello, \
dear"
"hello, " "d" "ear"
Определение констант
В C есть два простых способа определения констант:
С помощью #define препроцессор.
С помощью const ключевое слово.
Препроцессор #define
Ниже приведена форма использования препроцессора #define для определения константы:
#define identifier value
Следующий пример подробно объясняет это -
#import <Foundation/Foundation.h>
#define LENGTH 10
#define WIDTH 5
#define NEWLINE '\n'
int main() {
int area;
area = LENGTH * WIDTH;
NSLog(@"value of area : %d", area);
NSLog(@"%c", NEWLINE);
return 0;
}
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
2013-09-07 22:18:16.637 demo[21460] value of area : 50
2013-09-07 22:18:16.638 demo[21460]
Ключевое слово const
Вы можете использовать const префикс для объявления констант определенного типа следующим образом:
const type variable = value;
Следующий пример подробно объясняет это -
#import <Foundation/Foundation.h>
int main() {
const int LENGTH = 10;
const int WIDTH = 5;
const char NEWLINE = '\n';
int area;
area = LENGTH * WIDTH;
NSLog(@"value of area : %d", area);
NSLog(@"%c", NEWLINE);
return 0;
}
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
2013-09-07 22:19:24.780 demo[25621] value of area : 50
2013-09-07 22:19:24.781 demo[25621]
Обратите внимание, что определение констант ЗАГЛАВНЫМИ буквами является хорошей практикой программирования.