Шаг 10.
Использование простейших типов (продолжение)

    Здесь мы продолжим изучать особенности использования простейших типов.


    float - плавающий (вещественный). Значения этого типа - вещественные числа. Записываются они обычным способом, но вместо десятичной запятой используется десятичная точка. Например: 12.87, -316.12, 35.0.

    Пример 1.

   #include<iostream.h>
   #include<stdio.h>
   main ()
   {
      float z1 = 2.5,z2 = 5.67,z3 = z1 + z2;
      cout<<"Результат: "<<z3<<endl;
      printf ("Результат: %f\n",z3);
   }
Текст этой программы можно взять здесь.

    Результат работы программы:

     Результат: 8.17
     Результат: 8.170000


    double - число с плавающей точкой (двойной точности).

    Пример 2.

   #include<iostream.h>
   #include<stdio.h>
   main ()
   {
      double u1 = 2.5,u2 = 5.67,u3 = u1 + u2;
      cout<<"Результат: "<<u3<<endl;
      printf ("Результат: %e",u3);
   }
Текст этой программы можно взять здесь.

    Результат работы программы:

     Результат: 8.17
     Результат: 8.170000e+00


    Пример 3. Что будет выведено на экран при выполнении следующей программы:
   #include<iostream.h>
   main()
   {
     double x1,x2,x3,x4;
     x1=1/3;
     x2=1.0/3;
     x3=1/3.0;
     x4=1.0/3.0;
     cout<<"x1="<<x1<<endl;
     cout<<"x2="<<x2<<endl;
     cout<<"x3="<<x3<<endl;
     cout<<"x4="<<x4<<endl;
   }
Текст этой программы можно взять здесь.

    Результат работы программы:

     x1=0
     x2=0.333333
     x3=0.333333
     x4=0.333333

    Прокомментируем полученные результаты. Переменной x1 присваивается результат целочисленного деления 1 на 3, так как и делимое и делитель являются целыми числами. Переменные x2, x3, x4 будут иметь один и тот же результат. Переменная x4 содержит результат вещественного деления 1.0 на 3.0, так как делимое и делитель представлены вещественными значениями. При вычислении значений переменных x2, x3, прежде происходит расширение типа от целого к вещественному, так как одно из чисел в выражении вещественного типа. Поэтому сначала тип второго числа "расширяется" до вещественного типа, а только потом выполняется деление.


    Обратите внимание на отсутствие в этом списке строкового типа. Значением величины строкового типа является последовательность символов, поэтому этот тип не относят к простейшим типам.

    Строки могут содержать любые допустимые символы, в том числе русские буквы. Значение строки в языке C++ записывают в кавычках (не путать с апострофами!). Кавычки не являются частью строки и вводятся только для того, чтобы отметить ее начало и конец, т.е. играют ту же роль, что и апострофы в случае одиночного символа.

    В языке C++ нет специального типа, который можно было бы использовать для описания строк, поэтому они представляются в виде массива элементов типа char. Это означает, что символы строки можно представить себе расположенными в соседних ячейках памяти - по одному символу в ячейке:


Рис.1. Внутреннее представление строки

    Необходимо отметить, что последним элементом массива является символ \0 (нуль-символ). Он используется для того, чтобы отмечать конец строки. Нуль-символ не есть цифра 0; он не выводится на печать и в таблице кодов ASCII имеет номер 0. Наличие нуль-символа означает, что количество ячеек массива должно быть по крайней мере на одну больше, чем число символов, которые необходимо размещать в памяти.

    Массив можно представить себе как совокупность нескольких последовательно расположенных ячеек памяти. В нашем случае слово "Лошадь" представляет собой массив из 7 символов (6 букв слова + символ '\0').

    Пример 4.

   #include<iostream.h>
   #include<stdio.h>
   main ()
   {
      char string[30], str[40];
      printf("Задайте строку: ");
      scanf ("%s",string);
      printf ("%s\n",string);
      cout<<"-----------------"<<endl;
      cout<<"Еще раз задайте строку: ";
      cin>>str;
      cout<<str;
   }
Текст этой программы можно взять здесь.

    Комментарии к примеру 4.

1. char string[30],str[40]; - описали два массива из 30 и 40 ячеек памяти, в каждую из которых можно поместить один элемент типа char.

2. scanf ("%s",string); - вводим строку при помощи функции scanf(). Мы уже говорили о том, что если нужно ввести значение строковой переменной, то использовать символ & не нужно.

3. printf ("%s\n",string); - выводим строку на экран при помощи функции printf().

4. cin>>str; - используя потоки, вводим строку.

5. cout<<str; - отправляем введенную строку в поток вывода.


    Замечание. Обратите внимание на то, что, используя рассмотренные средства, нельзя ввести строку, содержащую пробельные символы! Если требуется задать строку, содержащую символы пробела, то можно воспользоваться функцией gets(), описание которой находится в заголовочном файле stdio.h.


    Мы закончили изучение основных типов языка C++. На следующем шаге мы поговорим об использовании основных операций, перечень которых был приведен в таблицах 1 и 2 шага 2.


Предыдущий шаг Содержание Следующий шаг