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
Запятая «,» разделяет аргументы функции. Запятая также используется как оператор в выражениях с запятой.