Объявление переменных и констант — различия между версиями
Korvin (обсуждение | вклад) м |
Korvin (обсуждение | вклад) м |
||
Строка 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 |
− | var x; | + | var x; динамика |
− | var x = "hello"; | + | var x = "hello"; string "hello" |
− | var x, y; | + | var x, y; динамика динамика |
− | var x, y = 0; | + | var x, y = 0; динамика int 0 |
− | var int x, y; | + | var int x, y; int динамика |
− | var int x, real y; | + | var int x, real y; int real |
− | var int x, y = 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>