Объявление переменных и констант — различия между версиями

Материал из Deeptown Manual
Перейти к: навигация, поиск
м
м
Строка 1: Строка 1:
Про объявление как переменных так и констант уже достаточно много говорилось в предыдущих главах этой книги. Вероятно, Читатель уже хорошо себе представляет что такое [[переменные]], чем они отличаются от [[Константы|констант]] и как следует их [[Переменные#Типизация при инициализации|инициализировать]]. Читатель уже должен представлять себе, что такое [[Переменные#Понятие переменной, тип переменной|тип]] переменной или константы, и чем статически типированные переменные отличаются от нетипированных, [[Переменные#Нетипированные (динамические) переменные|динамических переменных]]. В этой главе мы не будем уделять много внимания философским вопросам, касающимся переменных и констант а опишем только сами синтаксические конструкции объявления.
+
Про объявление как переменных так и констант уже достаточно много говорилось в предыдущих главах этой книги. Вероятно, Читатель уже хорошо себе представляет что такое [[переменные]], чем они отличаются от [[Константы|констант]] и как следует их [[Переменные#Типизация при инициализации|инициализировать]]. Читатель уже должен представлять себе, что такое [[Переменные#Понятие переменной, тип переменной|тип]] переменной или константы, и чем статически типированные переменные отличаются от нетипированных, [[Переменные#Нетипированные (динамические) переменные|динамических переменных]]. В этой главе мы не будем уделять много внимания философским вопросам, касающимся переменных и констант, а опишем только сами синтаксические конструкции объявления.
  
 
Вот несколько примеров объявления как одиночной переменной, так и группы переменных в рамках одного оператора:
 
Вот несколько примеров объявления как одиночной переменной, так и группы переменных в рамках одного оператора:
Строка 10: Строка 10:
 
var int x, y;
 
var int x, y;
 
var int x, real y;
 
var int x, real y;
var int x, y = 1.5;
+
var int x = "1", y = 1.5;
 
</source>
 
</source>
  
Строка 17: Строка 17:
 
То же самое относится и к инициализаторам, которые ставятся в соответствие только той переменной, которая стоит слева от оператора "=". К примеру, выражение в строке 4 будет инициализировать только переменную ''y'', в то время как переменная ''x'' не будет иметь инициализатора; то есть для переменной ''x'' объявление эквивалентно тому что записано в строке 1.
 
То же самое относится и к инициализаторам, которые ставятся в соответствие только той переменной, которая стоит слева от оператора "=". К примеру, выражение в строке 4 будет инициализировать только переменную ''y'', в то время как переменная ''x'' не будет иметь инициализатора; то есть для переменной ''x'' объявление эквивалентно тому что записано в строке 1.
  
 +
Обратите внимание на строку 7: переменная ''x'' имеет инициализатор типа <tt>string</tt>, но ввиду того что тип переменной указан явным образом, переменная будет иметь тип <tt>int</tt>. При этом, тип инициализатора будет ''приведен'' к типу переменной. Если же типы переменной и инициализатора ''неприводимы'', — будет выдано сообщение об ошибке.
  
 
Приведем еще раз те же самые примеры, но оформим их в виде таблицы, дополнив сведениями о типах переменых:
 
Приведем еще раз те же самые примеры, но оформим их в виде таблицы, дополнив сведениями о типах переменых:
  
 
<source lang="kpp">
 
<source lang="kpp">
//Строка объявления     Тип x    Тип y      Инициализатор x  Инициализатор y
+
//Строка объявления         Тип x    Тип y      Инициализатор x  Инициализатор y
  
var x;                 динамика   
+
var x;                     динамика   
var x = "hello";       string                  "hello"   
+
var x = "hello";           string                  "hello"   
var x, y;             динамика  динамика
+
var x, y;                 динамика  динамика
var x, y = 0;         динамика    int                              0
+
var x, y = 0;             динамика    int                              0
var int x, y;             int   динамика  
+
var int x, y;               int     динамика  
var int x, real y;       int     real
+
var int x, real y;           int       real
var int x, y = 1.5;       int     real                           1.5
+
var int x = "1", y = 1.5;   int       real         "1" as int        1.5
 
</source>
 
</source>
  
  
Объявления констант вместо <tt>'''var'''</tt>, начинаются с ключевого слова <tt>'''const'''</tt> и синтаксически ничем не отличаются от объявления переменных, за исключением того, что константы обязательно должны инициализироваться.
+
Объявления констант вместо <tt>'''var'''</tt>, начинаются с ключевого слова <tt>'''const'''</tt> и синтаксически ничем не отличаются от объявления переменных, за исключением того, что константы обязательно должны инициализироваться:
 +
 
 +
<source lang="kpp">
 +
const x;                    //неверно. требуется инициализатор
 +
const x = "hello";          //верно
 +
const x, y = 0;            //неверно. константа x не инициализируется
 +
const int x = "1", y = 1.5; //верно
 +
</source>
  
 
== Смотри также ==
 
== Смотри также ==

Версия 10:53, 13 сентября 2007

Про объявление как переменных так и констант уже достаточно много говорилось в предыдущих главах этой книги. Вероятно, Читатель уже хорошо себе представляет что такое переменные, чем они отличаются от констант и как следует их инициализировать. Читатель уже должен представлять себе, что такое тип переменной или константы, и чем статически типированные переменные отличаются от нетипированных, динамических переменных. В этой главе мы не будем уделять много внимания философским вопросам, касающимся переменных и констант, а опишем только сами синтаксические конструкции объявления.

Вот несколько примеров объявления как одиночной переменной, так и группы переменных в рамках одного оператора:

<source lang="kpp" line="1"> var x; var x = "hello"; var x, y; var x, y = 0; var int x, y; var int x, real y; var int x = "1", y = 1.5; </source>

При объявлении переменных важно понимать, что при явном указании типа переменной, он сопостовляется только идентификатору идущему сразу после него. Таким образом, строка 5 объявляет переменную x типа int, в то время как переменная y будет иметь динамический тип.

То же самое относится и к инициализаторам, которые ставятся в соответствие только той переменной, которая стоит слева от оператора "=". К примеру, выражение в строке 4 будет инициализировать только переменную y, в то время как переменная x не будет иметь инициализатора; то есть для переменной x объявление эквивалентно тому что записано в строке 1.

Обратите внимание на строку 7: переменная x имеет инициализатор типа string, но ввиду того что тип переменной указан явным образом, переменная будет иметь тип int. При этом, тип инициализатора будет приведен к типу переменной. Если же типы переменной и инициализатора неприводимы, — будет выдано сообщение об ошибке.

Приведем еще раз те же самые примеры, но оформим их в виде таблицы, дополнив сведениями о типах переменых:

<source lang="kpp"> //Строка объявления Тип x Тип y Инициализатор x Инициализатор y

var x; динамика var x = "hello"; string "hello" var x, y; динамика динамика var x, y = 0; динамика int 0 var int x, y; int динамика var int x, real y; int real var int x = "1", y = 1.5; int real "1" as int 1.5 </source>


Объявления констант вместо var, начинаются с ключевого слова const и синтаксически ничем не отличаются от объявления переменных, за исключением того, что константы обязательно должны инициализироваться:

<source lang="kpp"> const x; //неверно. требуется инициализатор const x = "hello"; //верно const x, y = 0; //неверно. константа x не инициализируется const int x = "1", y = 1.5; //верно </source>

Смотри также

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
информация
документация
Инструменты