Если Вы были внимательны, то могли заметить, что в предыдущем уроке по целочисленным переменным, я упустил один тип из данной группы - char. И сделал это специально.
char - целочисленный тип. Его знаковая(signed) версия(скорее всего) может содержать числа в диапазоне [-128, 127], а беззнаковая(unsigned) в диапазоне [0, 255]. Из предыдущих занятий становится очевидным, что под переменную такого типа отводится лишь один байт памяти. Почему же мы не рассмотрели его на ряду с целочисленными типами других размеров(short, int, long, long long)?
Дело лишь в использовании переменных этого типа. char - сокращение от "character", что значит "символ". Действительно, в таблице типов Вы могли увидеть его также и в группе символьных типов данных. В С++ переменная типа char расценивается как один из символов ASCII.
#include <iostream>
int main()
{
char test = 65;
int main()
{
char test = 65;
std::cout << test << std::endl;
return 0;
}
return 0;
}
Приведенный выше код выведет на экран не число 65, а символ 'A', что соответствует данному ASCII-коду. Это вовсе не потому, что в память каким-то магическим образом попадет символ. Вы ведь помните, что в ОЗУ могут находиться только числа? Дело лишь в том, что тип char облегчает работу с этими самыми символами. Программисту не надо знать, какой код у символа 'z' или 'L'. Достаточно присвоить переменной типа char любой из символов прямо из кода, а компилятор сам определит его числовой эквивалент и положит его в ячейку памяти:
#include <iostream>
int main()
{
char zCharacter = 'z';
int main()
{
char zCharacter = 'z';
char LCharacter = 'L';
std::cout << zCharacter << std::endl;
std::cout << LCharacter << std::endl;
return 0;
}
}
На экран последовательно выведутся символы 'z' и 'L', в то время, как физически, в переменных zCharacter и LCharacter будут находиться числа 122 и 76 соответственно. Отсюда вытекает следующее: переменные типа char можно использовать как полноценные целочисленные переменные(производить над ними арифметические операции и присваивать им числа). Но приятным бонусом является возможность присваивания им символов без каких-либо знаний об их ASCII-кодах.
Не сложно догадаться, что char16_t, char32_t и wchar_t лишь расширенные версии char, что помимо символов английского алфавита могут содержать в себе символы кириллицы или иероглифы. Эта тема касается больше кодировок текста, чем самого программирования, так что я опишу ее по наличии свободного времени.
Не сложно догадаться, что char16_t, char32_t и wchar_t лишь расширенные версии char, что помимо символов английского алфавита могут содержать в себе символы кириллицы или иероглифы. Эта тема касается больше кодировок текста, чем самого программирования, так что я опишу ее по наличии свободного времени.

Комментариев нет:
Отправить комментарий