Переменные, указатели, константы, области видимости
Tibbo BASIC и Tibbo C поддерживают несколько простых типов переменных: знаковые и беззнаковые 8-, 16- и 32-разрядные переменные.
Кроме того, есть строковый тип, уникальный для Tibbo BASIC и C.
Tibbo C поддерживает статические переменные, а Tibbo BASIC - нет.
Массивы и структуры поддерживаются и в Tibbo BASIC, и в C, но формат их хранения в ОЗУ в этих языках различается и совместимости нет: нельзя передать массив или структуру из процедуры BASIC в функцию C или наоборот.
Tibbo C также поддерживает объединения (union). Здесь без сюрпризов.
Определение и объявление переменных
Все переменные необходимо объявлять явно. Переменные нужно определить или объявить до их использования.
У каждой переменной фиксированный тип; «инвариантов» (переменных, которые при необходимости меняют свой тип) нет.
dim x as byte=5 'define first...
x=x+1 '...then use
'OR
declare xx as byte=5 'declare first...
xx=xx+1 '...then use
dim xx as byte 'define elsewhere
unsigned char x=5; //define first...
x=x+1; //...then use
//OR
extern unsigned char xx; //declare first
xx=xx+1; //...then use
unsigned char xx; //define elsewhere
Определения и объявления нескольких переменных сразу тоже допустимы.
Синтаксис Tibbo BASIC не позволяет задать нужное начальное значение для каждой переменной в операторе dim с несколькими переменными.
В C это можно:
dim x,y as byte=5 'x will be 0 and y will be 5.
x=2 'you will have to initialize x separately
'AND ELSEWHERE...
declare x,y as byte
unsigned char x=2,y=5; //There is no problem doing this in C
//AND ELSEWHERE
extern unsigned char x,y;
В Tibbo BASIC и C не обязательно размещать все определения переменных в начале процедуры (функции). Строки с «процедурным» кодом можно смешивать с новыми объявлениями и определениями переменных:
Как объясняется в разделе Области видимости, Tibbo BASIC и C создают вложенные области видимости внутри управляющих конструкций, таких как if-then-else. «Подлокальные» переменные можно определять и там.
sub test
dim i as word
i=i+10
dim s as string 'this variable is defined after some procedural code
end sub
void test(){
unsigned int i;
i+=10;
string s; //'this variable is defined after some procedural code
}
Указатели (только Tibbo C)
Tibbo C поддерживает указатели (а Tibbo BASIC - нет).
Указатели реализованы стандартным образом, что одновременно и сила, и слабость ANSI C.
Достоинства арифметики указателей многочисленны и хорошо известны, так что хвалить её мы здесь не будем.
Слабость в том, что указатели C небезопасны. Плохо написанное приложение, активно использующее указатели, легко может наломать дров.
Tibbo BASIC - абсолютно безопасная среда программирования: плохой код не сможет повредить память приложения или TiOS. Tibbo C по сравнению с ним - «почти безопасная» среда.
«Виновники», портящие «репутацию безопасности» Tibbo C, - это указатели, массивы, структуры и объединения.
Одна из нестандартных особенностей Tibbo C, отличающая его от ANSI C, - строковый тип переменных.
В разделе Строковый тип и указатели вы найдёте интересные сведения о строках, а также об указателях на этот уникальный тип переменных.