Файл: описание микроСи .doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 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 байта,