ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.07.2024
Просмотров: 62
Скачиваний: 0
MikroC Константы (числа)
Целые числа (константы) могут быть представлены в виде десятичных (с основанием 10), шестнадцатеричных (с основанием 16), в виде двоичного кода (с основанием 2), или восьмеричного (с основанием 8). При отсутствии любого суффикса расширения, тип данных числа зависит от его значения.
Десятичные константы могут принимать значения в диапазоне (‑2147483648 +4294967295). Числа, превышающие эти границы, сгенерируют ошибку типа "Вне диапазона". Десятичные числа не должны начинаться с нуля. Число, начинающееся с нуля, воспринимается как восьмеричное.
int i = 10; / * объявление переменной, равной десятичному числу 10 */
int i = 010; / * i =8 (в восьмеричном коде) */
int i = 0; /* десятичный 0 = восьмеричный 0 */
Типы констант приведены ниже в таблице
< -2147483648 |
Error: Out of range! (Ошибка: Вне диапазона!) |
-2147483648 …32769 |
long |
-32768…129 |
int |
-128…127 |
short |
128…255 |
unsigned short |
256 … 32767 |
int |
32768…65535 |
unsigned int |
65536 …2147483647 |
long |
2147483648 …4294967295 |
unsigned long |
> 4294967295 |
Error: Out of range! |
Шестнадцатеричные константы. Все числа, начинающие с 0х (0Х) считаются шестнадцатеричными.
Двоичные константы. Все числа, начинающие с 0b (или 0B), представлены в двоичном коде.
Восьмеричные константы. Все числа с начальным нулем считаются восьмеричными. Если такое число содержит цифры 8 или 9, выдается сообщение об ошибке.
При отсутствии любого суффикса расширения, тип данных восьмеричного числа зависит от его своей величины, согласно правилам представленным выше. Например, число 0777 будет трактоваться как int.
Числа с плавающей запятой состоят из десятичного целого, знака десятичной дроби и дроби, e или E и степени, суффикса f или F или I или L (может не быть).
!0. //=0.0
-1.23 //=-1.23
23.45е6 //=23.45*106
2е-5 //=2.0*105
3Е+10 //=3.0*1010
.09Е34 //=0.09*1034
В mikroC диапазон чисел с плавающей запятой (±1.17549435082 * 10-38 .. ±6.80564774407 * 1038).
Символьные константы - один или более символов заключенных в одиночные кавычки, например, '+', или '\n'. В mikroC допускаются только символьные беззнаковые числа типа int.
Строковые константы заключаются в двойные кавычки, например, “This is a text”.
Перечислимые константы зависят от объявленного типа. А идентификаторы (перечисления) являются элементами возможных значений (например, от sun до sat).
enum weekdays {sun=0, mon, tue, wed, thu, fri, sat};
При инициализации идентификаторов допускаются отрицательные значения.
Обратный слэш (\), используется для определения последовательности перехода. Одна из наиболее общих констант перехода - конец строки символа (\n). Обратный слэш также используется восьмеричными или шестнадцатеричными числами, для представления ASCII символов или контрольного кода, соответствующего этой величине. В таблице показаны доступные последовательности перехода.
Символ |
Значение |
Тип |
функция |
\a |
0x07 |
BEL |
Звуковой сигнал - звонок |
\b |
0x08 |
BS |
Забой (Backspace) |
\f |
0x0c |
FF |
Перевод формата |
\n |
0x0a |
LF |
Переход на новую строку |
\r |
0x0d |
CR |
Возврат каретки |
\t |
0x09 |
HT |
Горизонтальная табуляция |
\v |
0x0b |
VT |
Вертикальная табуляция |
\\ |
0x5c |
\ |
Обратный слэш |
\‘ |
0x27 |
‘ |
Простая кавычка (апостроф) |
\" |
0x22 |
“ |
Двойная кавычка |
\? |
0x3f |
? |
Знак вопроса |
\N |
|
любой |
строка (до 3 восьмеричных цифр) |
\xN или \XN |
|
любой |
16-ричная константа (строка) |
Устранение противоречий. Неоднозначные ситуации могут возникнуть при использовании последовательностей перехода, приведенной ниже:
Lcd_Out_Cp ("\x09 1.0 Вступление");
Они должны восприниматься как \x09 and "1.0 Intro". Но компилятор mikroC поймет их как шестнадцатеричное число «\x091» и буквенную строку «".0 Вступление"». Для исключения подобных ситуаций, необходимо писать код в виде:
Lcd_Out_Cp("\x09" "1.0 Вступление");
Операторы-разделители в МикроСи: [] {} () , ; : * = #.
Квадратные скобки [] предназначены для индексации массивов. С их помощью можно обратиться к элементам массива.
char s[80];
…
s[3]=’a’;
Фигурные скобки {} показывают начало и конец утверждений. После закрывающей скобки «}» не требуется ставить «;».
If (d==z)
{
++x;
Func();
}
Круглые скобки () используются для группировки выражений, изолирования условных выражений и указания вызовов функций и их параметров:
d = с * (a + b) ;
if (d == z) ++x; //в скобках проверка условия сравнения
func(); // вызов функции без аргументов
void func2 (int n); // объявление ф-и с параметром n
Запятая «,» разделяет аргументы функции. Запятая также используется как оператор в выражениях с запятой.
Void func (int n, float f, char ch);
Точка с запятой «;» - терминатор утверждения. Любое правильное выражение (включая пустое выражение) сопровождающееся точкой с запятой интерпретируется как законченное утверждение.
a + b;
++a; x = 0;
; //пустое или нулевое утверждение
Двоеточие «:» используется для выделения утверждения:
start: x = 0;
…
goto start;
Указатель «*» возвращает значение переменной по указанному адресу. например, если m содержит адрес переменной count, то х=m*; помещает значение count в х.
Знак Равенства «=» – используется для операции присваивания:
int x = 5;
int test[5]={1,2,3,4,5};
Знак (#) (директива препроцессора). Директивы препроцессора, не являясь частью языка, расширяют область его применения. Обработка программы препроцессором проходит перед ее компиляцией. На этом этапе: в компилируемый файл включаются другие файлы, определяются символьные константы и макросы, задаются режимы условной компиляции программного кода и условного выполнения директив препроцессора. Любая строка, начинающаяся с # воспринимается как директива препроцессора, а в конце директивы (;) не ставится.
Типы данных
МikroC – очень формализованный язык, это означает что каждый объект, функция и выражение должны иметь строго определенный тип, который может быть распознан компилятором. Причем, mikroC работает исключительно с числовыми типами.
МikroC поддерживает много стандартных (встроенных) и определяемых пользователем типов данных, включая беззнаковые целые числа, числа с плавающей запятой разной точности, массивы структуры и объединения.
Все типы можно разбить на 4 основных группы
Aggregate (структуры данных) |
Array |
Массивы |
struct |
Структуры |
|
union |
Объединения |
|
class |
Классы |
|
Function |
|
Функции |
Scalar (скалярные) |
Arithmetic |
Арифметические |
Enumeration |
Перечислимые |
|
Pointer |
Указатели |
|
Reference |
Ссылки |
|
void |
|
Нет значения |
Синтаксис объявления типа:
Определение_типа идентификатор;
Идентификатор – вводимое пользователем имя нового типа, определение_типа – описание этого типа.
Например,
double Ar[10];//объявление типа с именем Ar,
в дальнейшем на этот тип можно ссылаться при объявлении переменных, например,
Ar A={1,2,3,4,5,6,7,8,9,10};
Арифметические типы
Арифметические описатели типа построены из следующих ключевых слов: void, char, int, float, double со следующими модификаторами: short, long, signed and unsigned. Используя эти ключевые слова можно сформировать как целое число так и число с плавающей запятой.
Целочисленные типы
Типы char, int вместе с их модификаторами образуют следующие типы данных.
Тип |
Размер в байтах |
диапазон |
(unsigned) char |
1 |
0.. 255 |
signed char |
1 |
-128.. 127 |
(signed) short (int) |
1 |
-128.. 127 |
unsigned short (int) |
1 |
0 .. 255 |
(signed) int |
2 |
-32768 .. 32767 |
unsigned (int) |
2 |
0.. 65535 |
(siqned) lonq (int) |
4 |
-2147483648 .. 2147483647 |
unsigned lonq |
4 |
0 .. 4294967295 |
Ключевые слова (стоят в скобках) могут быть опущены.
Числа с плавающей запятой находятся в диапазоне:
float (‑1,5*1045…3,4*1038) – 4 байта,
double (1,5*1045…3,4*1038) - 4 байта,