Здесь мы продолжим изучать особенности использования простейших типов.
Пример 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
Пример 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
#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; - отправляем введенную строку в поток вывода.
Мы закончили изучение основных типов языка C++. На следующем шаге мы
поговорим
об использовании основных операций, перечень которых был приведен в
таблицах 1 и 2 шага 2.