3.2.3. Определение объектаВ самом простом случае оператор определения объекта состоит из спецификатора типа и имени объекта и заканчивается точкой с запятой. Например: double salary; double wage; int month; int day; int year; unsigned long distance; В одном операторе можно определить несколько объектов одного типа. В этом случае их имена перечисляются через запятую: double salary, wage; int month, day, year; unsigned long distance; Простое определение переменной не задает ее начального значения. Если объект
определен как глобальный, спецификация С++ гарантирует, что он будет инициализирован
нулевым значением. Если же переменная локальная либо динамически размещаемая
(с помощью оператора new), ее начальное значение не определено, то есть она
может содержать некоторое случайное значение. int main() { // неинициализированный локальный объект int ival; Начальное значение может быть задано прямо в операторе определения переменной. В С++ допустимы две формы инициализации переменной – явная, с использованием оператора присваивания: int ival = 1024; string project = "Fantasia 2000"; и неявная, с заданием начального значения в скобках: int ival( 1024 ); string project( "Fantasia 2000" ); Оба варианта эквивалентны и задают начальные значения для целой переменной
ival как 1024 и для строки project как "Fantasia 2000". double salary = 9999.99, wage = salary + 0.01; int month = 08; day = 07, year = 1955; Переменная становится видимой (и допустимой в программе) сразу после ее определения, поэтому мы могли проинициализировать переменную wage суммой только что определенной переменной salary с некоторой константой. Таким образом, определение: // корректно, но бессмысленно int bizarre = bizarre; является синтаксически допустимым, хотя и бессмысленным. // ival получает значение 0, а dval - 0.0 int ival = int(); double dval = double(); В следующем определении: // int() применяется к каждому из 10 элементов vector< int > ivec( 10 ); к каждому из десяти элементов вектора применяется инициализация с помощью int().
(Мы уже говорили о классе vector в разделе 2.8. Более
подробно об этом см. в разделе 3.10 и главе 6.) #include <cmath> #include <string> abs() – стандартная функция, возвращающая абсолютное значение параметра. Упражнение 3.3Какие из приведенных ниже определений переменных содержат синтаксические ошибки? (a) int car = 1024, auto = 2048; (b) int ival = ival; (c) int ival( int() ); (d) double salary = wage = 9999.99; (e) cin >> int input_value; Упражнение 3.4Объясните разницу между l-значением и r-значением. Приведите примеры. Упражнение 3.5Найдите отличия в использовании переменных name и student в первой и второй строчках каждого примера: (a) extern string name; string name( "exercise 3.5a" ); (b) extern vector<string> students; vector<string> students; Упражнение 3.6Какие имена объектов недопустимы в С++? Измените их так, чтобы они стали синтаксически правильными: (a) int double = 3.14159; (b) vector< int > _; (c) string namespase; (d) string catch-22; (e) char 1_or_2 = '1'; (f) float Float = 3.14f; Упражнение 3.7В чем разница между следующими глобальными и локальными определениями переменных? string global_class; int global_int; int main() {Назад Вперед Содержание |
Нет комментариев. Оставить комментарий: |