Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Философия программирования на C++ Выпуск 20. Символы


Всем привет! Сегодня мы рассмотрим оставшиеся нетронутыми типы данных.

Дело в том, что хранить можно в компьютере не только числа, но и любую другую информацию. Например, символы. И сразу пример:

#include <iostream>
using namespace std;
int main() {
    // Давайте напишем тот же калькулятор - но без выбора меню?
    // Пока он будет очень ограничен - вводим число, операцию, и снова число
    double first = 0;  // Первое число
    double second = 0;  // Второе число
    char operation = 0;  // Операция, производимая над числами - символ (+-*/)
    cout << "Please, enter expression: ";
    cin >> first >> operation >> second;
    double result = 0;  // double - то же самое, что и float, но хранит бОльшие числа
    if ('/' == operation) // Символы заключаются в одинарные кавычки
        result = first / second;
    else if ('*' == operation)
        result = first * second;
    else if ('-' == operation)
        result = first - second;
    else if ('+' == operation)
        result = first + second;
    else {  // Ставить здесь скобочки - не очень красивый стиль программирования, но один раз
прощается
        cout << "Incorrect operation: \'" << operation << "\'" << endl;
        return 0;
    }
    cout << "Result: " << result << endl;
}

Здесь мы использовали новый тип данных - char (от слова character - символ). В нем можно хранить различные символы, вводимые с клавиатуры. Но хранить можно только один символ. Кстати, символом может быть и цифра.

В языке C++ символы пишутся в одинарных кавычках (апострофах), как мы использовали в условиях.

Еще один тип данных - double. Это тоже вещественный тип, он отличается от float тем, что способен хранить гораздо больше информации о числе (до 15 знаков).

У целых чисел есть такие спецификаторы - signed, unsigned, short, long, и даже long long. Приведу таблицу значений для всех этих типов (да, нельзя в компьютере хранить числа до бесконечности):

 Тип данныхДиапазон значенийРазмер (байт) 
signed char -128 … 127 1
unsigned char 0 … 255
signed short int -32 768 … 32 7672
unsigned short int 0 … 65 535 
signed long int -2 147 483 648 … 2 147 483 647 
unsigned long int 0 … 4 294 967 295 
float 3.4e-38 … 3.4e+38 
double 1.7e-308 … 1.7C+308 
long double 3.4e-4932 … 3.4e+4932 10 

Да, char (символьный тип) - тоже на самом деле число! Просто специальным способом обрабатываемое. Дело в том, что в памяти все хранится в виде последовательности байтов (8 бит, то есть 8 нулей и единиц). В каждом байте можно хранить до 256 различных значений. Для символов есть тип char, занимающий в памяти компьютера один байт - и имеет 256 значений (от -128 до +127). и каждому числу соответствует свой символ - есть специальные таблицы этого соответствия - ASCII: http://ru.wikipedia.org/wiki/ASCII

Обычный тип int обычно соответствует signed long int. Есть также обычные типы short, signed, unsigned, long - то же самое, что и если приписать int к ним. Также есть специальный тип long long - 8-байтный целочисленный тип.

Их использование - в следующем выпуске. А сейчас последнее, что было в этом выпуске - это спецсимволы в строках. Перед этими символами обычно ставится обратная косая черта \ . Здесь мы применил его для вывода кавычек \' . То же самое можно использовать и для \". Есть и другие - о них тоже в следующем выпуске (приведем таблицу всех спецсимволов).

Всем спасибо, до завтра! 

 


В избранное