Переменные, указатели, константы, области видимости

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, - строковый тип переменных.

В разделе Строковый тип и указатели вы найдёте интересные сведения о строках, а также об указателях на этот уникальный тип переменных.

Исходный материал Tibbo обновлён 11 июля 2022Оригинал на docs.tibbo.com · Сообщить об ошибке