Как получить код символа
Перейти к содержимому

Как получить код символа

  • автор:

Как вывести код символа?

Вывести код символа
Помогите с помощью scanf и printf, библиотекой stdio.h написать программу: с клавиатуры вводится.

Вывести ascii код символа
На самом деле я немного в ступоре, но почему код выводит число 99, а не 11? #include <iostream>.

Вывести код введенного пользователем символа
Напишите программу, которая выводит код введенного пользователем символа. Программа должна.

Вывести на экран код и тип символа
С клавиатуры вводится произвольная последовательность символов. Для каждого символа выведите на.

4336 / 1505 / 101
Регистрация: 12.04.2009
Сообщений: 2,342

(int)(C)

Регистрация: 29.12.2009
Сообщений: 40
блин я думал тут сложнее))
1260 / 798 / 108
Регистрация: 16.09.2009
Сообщений: 2,010

1 2 3 4 5 6 7 8 9 10 11 12 13
#include #include int main(){ char symb = 'C'; int tr =(int)(symb); printf("%d ",tr); printf("\n"); getch(); return 0; }

Регистрация: 29.12.2009
Сообщений: 40
а если наоборот?код в символ?
4336 / 1505 / 101
Регистрация: 12.04.2009
Сообщений: 2,342

(char)(i)

561 / 372 / 55
Регистрация: 05.04.2009
Сообщений: 767
mybabloo,

ЦитатаСообщение от mybabloo Посмотреть сообщение

номер в кодовой таблице
посмотри там -> про \x
Регистрация: 29.12.2009
Сообщений: 40

mirso
спасиб, теперь разобрался

Добавлено через 8 минут
Странно. Почему когда я пишу (char)(i), пишется непонятный символ,
а когда (char)(65), ну и любого другого числа то выводится все по кодировке?

4336 / 1505 / 101
Регистрация: 12.04.2009
Сообщений: 2,342

1 2 3 4 5 6 7
#include int main() { int i = 65; std::cout  (char)(i); return 0; }
out: A

Регистрация: 29.12.2009
Сообщений: 40

Вот еще вопрос! Ведь каждому числу соотв. 2 символа, верхнего и нижнего регистра. Как, например, вместо «1» вывести «!» ?

4336 / 1505 / 101
Регистрация: 12.04.2009
Сообщений: 2,342

ЦитатаСообщение от mybabloo Посмотреть сообщение

Ведь каждому числу соотв. 2 символа, верхнего и нижнего регистра.
Нет, это разные символы.
Таблица символов ASCII
Регистрация: 18.09.2012
Сообщений: 38
спасибо. Как раз то что нужно
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Вывести ASCII–код символа в десятичном, восьмеричном и шестнадцатеричном виде
Здравствуйте. Помогите пожалуйста с лабораторной. В языке С++ полный ноль, ничего не понимаю.

Как определить код символа ?
Ввести любой латинский строчный символ с клавиатуры. Вывести его порядковый и соответствующий.

Как получить бинарный код символа?
Я читаю txt в котором разные символы(без русских) типа такого 45h8giJDFJH Я должен прочитать их.

Как определить двоичный код символа.
Как определить двоичный код символа? Нашёл тему и исходный код программы, но мне нужно понять.

Символы и строки

До сих пор мы работали только с числовыми данными, как целыми, так и действительными. Но очень часто (если речь идет не о сугубо научных рассчетах) приходится оперировать с текстовой информацией. В этом листочке содержится основная информация о принципах работы с символами и текстами.

Символьный тип char

Любой текст состоит из символов. Символ — это некоторый значок, изображение. Один и тот же символ можно записать по-разному, например, два человека по-разному напишут от руки букву “A”, и даже в компьютерном представлении одна и та же буква будет выглядеть по-разному, если ее отображать разными шрифтами, при этом это будет все равно один и тот же символ. Верно и другое: разные символы могут быть записаны одинаково, например, вот две разные буквы, одна — латинского алфавита, другая — русского: “A” и “А”. Несмотря на то, что они выглядят одинаково, удобней считать их разными символами.

Итак, способ хранения текстовой информации в компьютере не связан напрямую с изображением этого текста. Вместо символов хранятся их номера — числовые коды, а вот то, как выглядит символ с данным числовым кодом на экране напрямую зависит от того, какой используется шрифт для отображения символов. При этом, разумеется, следовало бы договориться о единообразном способе кодирования символов числовыми кодами, иначе текст, записанный на одном компьютере, невозможно будет прочитать на другом компьютере.

Первоначально договорились под кодирование одного символа отвести один байт, то есть 8 бит информации. Таким образом можно было закодировать 256 различных значений, то есть в записи текста можно использовать 256 различных символов. Этого достаточно, чтобы отобразить все символы латинского алфавита, цифры, знаки препинания и некоторые другие символы. Стандарт, указывающий, какие числовые коды соответствуют каким основным символам, называется ASCII. В таблицу ASCII включены символы с кодами от 0 до 127, то есть ASCII — это семибитный код. Вот так выглядит таблица ASCII:

Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex ------------------------------------------------------------------------------------- (nul) 0 0000 0x00 | (sp) 32 0040 0x20 | @ 64 0100 0x40 | ` 96 0140 0x60 (soh) 1 0001 0x01 | ! 33 0041 0x21 | A 65 0101 0x41 | a 97 0141 0x61 (stx) 2 0002 0x02 | " 34 0042 0x22 | B 66 0102 0x42 | b 98 0142 0x62 (etx) 3 0003 0x03 | # 35 0043 0x23 | C 67 0103 0x43 | c 99 0143 0x63 (eot) 4 0004 0x04 | $ 36 0044 0x24 | D 68 0104 0x44 | d 100 0144 0x64 (enq) 5 0005 0x05 | % 37 0045 0x25 | E 69 0105 0x45 | e 101 0145 0x65 (ack) 6 0006 0x06 | & 38 0046 0x26 | F 70 0106 0x46 | f 102 0146 0x66 (bel) 7 0007 0x07 | ' 39 0047 0x27 | G 71 0107 0x47 | g 103 0147 0x67 (bs) 8 0010 0x08 | ( 40 0050 0x28 | H 72 0110 0x48 | h 104 0150 0x68 (ht) 9 0011 0x09 | ) 41 0051 0x29 | I 73 0111 0x49 | i 105 0151 0x69 (nl) 10 0012 0x0a | * 42 0052 0x2a | J 74 0112 0x4a | j 106 0152 0x6a (vt) 11 0013 0x0b | + 43 0053 0x2b | K 75 0113 0x4b | k 107 0153 0x6b (np) 12 0014 0x0c | , 44 0054 0x2c | L 76 0114 0x4c | l 108 0154 0x6c (cr) 13 0015 0x0d | - 45 0055 0x2d | M 77 0115 0x4d | m 109 0155 0x6d (so) 14 0016 0x0e | . 46 0056 0x2e | N 78 0116 0x4e | n 110 0156 0x6e (si) 15 0017 0x0f | / 47 0057 0x2f | O 79 0117 0x4f | o 111 0157 0x6f (dle) 16 0020 0x10 | 0 48 0060 0x30 | P 80 0120 0x50 | p 112 0160 0x70 (dc1) 17 0021 0x11 | 1 49 0061 0x31 | Q 81 0121 0x51 | q 113 0161 0x71 (dc2) 18 0022 0x12 | 2 50 0062 0x32 | R 82 0122 0x52 | r 114 0162 0x72 (dc3) 19 0023 0x13 | 3 51 0063 0x33 | S 83 0123 0x53 | s 115 0163 0x73 (dc4) 20 0024 0x14 | 4 52 0064 0x34 | T 84 0124 0x54 | t 116 0164 0x74 (nak) 21 0025 0x15 | 5 53 0065 0x35 | U 85 0125 0x55 | u 117 0165 0x75 (syn) 22 0026 0x16 | 6 54 0066 0x36 | V 86 0126 0x56 | v 118 0166 0x76 (etb) 23 0027 0x17 | 7 55 0067 0x37 | W 87 0127 0x57 | w 119 0167 0x77 (can) 24 0030 0x18 | 8 56 0070 0x38 | X 88 0130 0x58 | x 120 0170 0x78 (em) 25 0031 0x19 | 9 57 0071 0x39 | Y 89 0131 0x59 | y 121 0171 0x79 (sub) 26 0032 0x1a | : 58 0072 0x3a | Z 90 0132 0x5a | z 122 0172 0x7a (esc) 27 0033 0x1b | ; 59 0073 0x3b | [ 91 0133 0x5b | < 123 0173 0x7b (fs) 28 0034 0x1c | < 60 0074 0x3c | \ 92 0134 0x5c | | 124 0174 0x7c (gs) 29 0035 0x1d | = 61 0075 0x3d | ] 93 0135 0x5d | >125 0175 0x7d (rs) 30 0036 0x1e | > 62 0076 0x3e | ^ 94 0136 0x5e | ~ 126 0176 0x7e (us) 31 0037 0x1f | ? 63 0077 0x3f | _ 95 0137 0x5f | (del) 127 0177 0x7f

При этом символы с кодами, меньшими 32 — это специальные управляющие символы, которые не отображаются на экране. Например, для того, чтобы обозначить конец строки в системе Linux используется один символ с кодом 10, а в системе Windows — два подряд идущих символа с кодами 13 и 10, символы с кодами 48-57 соответствуют начертанию арабских цифр (обратите внимание, символ с кодом 0 — это вовсе не символ, отображающийся на экране, как “0”), символы с кодами 65-90 — заглавные буквы буквы латинского алфавита, а если к их кодам прибавить 32, то получатся строчные буквы латинского алфавита. В промежутках между указанными диапазонами находятся знаки препинания, математические операции и прочие символы.

Но в ASCII-таблицы нет русских букв! А также нет букв сотен других национальных алфавитов. Первоначально для отображения букв национальных алфавитов использовали вторую половину возможного значения байта, то есть символы с кодами от 128 до 255. Это приводило к множеству проблем, например, поскольку 128 значений явно недостаточно для того, чтобы отобразить символы всех национальных алфавитов (даже недостаточно для того, чтобы отобразить символы одного алфавита, например, китайской письменности. Поэтому в настоящее время для кодирования символов используется стандарт Unicode, последняя версия 5.2 которого (октябрь, 2009) включает 107361 различный символ. Естественно, для кодирования Unicode-символов недостаточно одного байта на символ, поэтому используются многобайтовые кодировки (для представления одного символа необходимо несколько байт).

Мы будем работать только с символами ASCII, поэтому для представления одного символа будет использоваться только один байт.

В языке C++ для хранения однобайтового символа используется тип данных char . Переменную типа char можно рассматривать двояко: как целое число, занимающее 1 байт и способное принимать значения от -128 до 127 (тип signed char , есть также беззнаковая модификация unsigned char , принимающая значения от 0 до 255) и как один символ текста. Само по себе определение char может оказаться как знаковым, так и беззнаковым, в зависимости от операционной системы и компилятора. Поэтому использовать тип char не рекомендуется, лучше явно указывать будет ли он знаковым ( signed ) или беззнаковым ( unsigned ).

Как и целые числа, данные типа char можно складывать, вычитать, умножать и даже делить. Но если операции умножения и деления, как правило, бессмысленны, то сложение и вычитание вполне осмысленно. Например, если к символу ‘A’ прибавить 1, то получится символ ‘B’ , а если вычесть 1, то получится символ ‘@’ . То есть в следующем фрагменте кода на экран будет выведена буква B .

char c = 'A'; c = c + 1; cout 

В этом примере видно, что переменным типа char можно присваивать значения, равные ASCII кодам символов, если эти символы заключать в кавычки. То есть запись 'A' будет соответствовать символу A , или ASCII коду 65.

Также в этом примере видно, что при выводе на экран переменной типа char мы увидим изображение этого символа. Как же узнать значение ASCII-кода символа? Его не нужно узнавать, сам символ - это и есть ASCII-код. А как его вывести на экран? Очень просто - нужно преобразовать значение величины типа char к значению типа int . Например, вот так:

cout 

Имя типа, записанное в скобочках перед значением, это и есть оператор преобразования значения к указанному типу.

Аналогично, при считывании переменной типа char через поток cout , из потока ввода считывается один символ, переменная получает значение, равное его ASCII-коду. Например, если написать программу, содержающую строчку

char c; cin >> c;

запустить ее, ввести символ A (безо всяких кавычек!), то в переменную c будет записано значение 65 - ASCII-код символа A .

Переменным типа char можно и явно присваивать числовые значения. Например, можно сделать так:

#include using namespace std; int main() < unsigned char c = 'A'; cout << c << " " << (int) c << endl; c = 126; // char можно присвоить и числовое значение cout

Эта программа выведет две строки: “ A 65 ” и “ ~ 126 ”, то есть символы с ASCII-кодами 65 (A) и 126 (~) и сами ASCII-коды.

Организовать последовательное посимвольное считывание всего входного потока можно при помощи цикла while :

#include using namespace std; int main() < char c; while (cin >> c) // Цикл пока считывание успешно < // Делаем необходимые действия, // обрабатывая символ c >return 0; >

В этом примере программа будет посимвольно считывать входной поток (по умолчанию — ввод с клавиатуры), пока не встретит признак конца файла. Для того, чтобы сообщить программе о завершении входного потока при вводе с клавиатуры необходимо нажать клавиши Ctrl-d в системе Linux и Ctrl-z в системе Windows.

Эта программа при считывании данных будет игнорировать символы–разделители: пробелы, символы новой строки и табуляции. Если нужно, чтобы в переменную c считывались все символы, в том числе и разделители, то необходимо для потока ввода cin установить манипулятор noskipws при помощи инструкции:

cin >> noskipws;

>S; // считать строку S с клавиатуры --> >S1>>S2>>S3; --> >S) // Цикл до тех пор, пока считывание успешно --> >. -->

Строки в языке C++

Текстовая строка - это последовательность символов. Поскольку символы в строке пронумерованы, то естественным представлением для строки был бы массив символов. Так строки и представлялись в языке C - строкой считался массив символов, а для обозначения конца строки использовался символ с ASCII-кодом 0, что позволяло хранить строки переменной длины (то есть в массиве char[n] можно было хранить строки любой длины, не превосходящей n-1 . Такой способ хранения строк порождал ряд неудобств: любая строка была ограничена по длине размером массива, а чтобы вычислить длину строки необходимо было пройти по всей строке до появления нулевого символа, то есть определение длины строки требует количество операций, пропорциональное этой длине.

В языке C++ для представления строк существует более совершенный тип данных string , в основе которого лежит такой же массив символов, завершающийся нулевым символом, но содержащий еще ряд дополнительных возможностей. Для работы со строками языка C++ необходимо в начале программы подключить описание типа string , которое находится в одноименном файле:

#include

Переменная для хранения строковых данных объявляется так:

string S;

Присвоить строковой переменной некоторое константное значение можно так:

S = "Hello, world!";

С записью строк в тексте программы в кавычках мы уже встречались, когда выводили текст в поток cout . Обратите внимание - константы типа char записываются в одинарных кавычках, а строки - в двойных кавычках. В частности, 'A' - это символ, а "A" - это строка, состоящая из одного символа. Поэтому переменной типа char нельзя присвоить значение "A" , поскольку они имеют несовместимые типы данных.

По сути, переменная типа string является массивом символов и с каждым символом этой строки можно работать по-отдельности, обращаясь к ним по индексу, как к элементам массива. Например:

cout 

Для определения длины строки есть метод size() , применяемый к строке. Он возвращает целое число - количество символов в строке. Его можно использовать так:

string S; cin >> S; cout 

Для начала нам понадобится две операции над строками: сложение двух строк и изменение размера строки.

Основная операция над строками - сложение: например, при сложении строк "Hello, " и "world!" получится строка "Hello, world!" . Такая операция над строками называется .

Вот пример использования конкатенации строк:

string S, S1, S2; // Объявление трех строк cout > S1; // Считали строку S1 S2 = "Hello, " // Присвоили строке значение S = S2 + S1; // Использование конкатенации cout 

Другая операция - изменение размера строки. Для этого существует метод resize , который применяется к строке. У метода resize есть две формы записи: с одним и с двумя параметрами. Если он вызывается с одним параметром, то этот параметр задает новую длину строки. Например, так:

string S = "abcdefg" S.resize(3); cout 

Второй параметр метода resize задает символ, которым будут заполнены символы в строке, если размер строки увеличивается в результате изменения размера. Например:

string S = "abc" S.resize(6, 'd'); cout 

При считывании строк из входного потока считываются все символы, кроме символов–разделителей (пробелов, табуляций и новых строк), которые являются границами между строками. Например, если при выполнении следующей программы

string S1, S2, S3; // объявили 3 строки cin>>S1>>S2>>S3;

ввести текст ‘ Мама мыла раму ’ (с произвольным количеством пробелов между словами), то в массив S1 будет записана строка "Мама" , в S2 — "мыла" , в S3 — "раму" .

Таким образом, организовать считывание всего файла по словам, можно следующим образом:

string s; while (cin >> s) // Цикл пока считывание успешно < // Делаем необходимые действия >

Если нужно считать строку со всеми пробелами, то необходимо использовать функцию getline следующим образом:

string S; getline(cin, S);

В данном случае если запустить эту программу и ввести строку "Мама мыла раму" , то именно это значение и будет присвоено строке S . Считать же весь входной поток по строкам можно при помощи следующего кода:

string s; while (getline(cin, S)) // Цикл пока считывание успешно < // Делаем необходимые действия >

Упражнения

3A: ASCII-код символа

Считайте со стандартного ввода символ и выведите его ASCII-код. Решите эту задачу с использованием только одной переменной типа char .

3B: Символ с данным ASCII-кодом

Считайте со стандартного ввода целое число и выведите ASCII-символ с таким кодом. Решите эту задачу с использованием только одной переменной типа int .

3C: Таблица ASCII

! 33 " 34 # 35 . > 125 ~ 126

3D: Символы в заданном интервале

Выведите подряд, без пробелов, все символы, лежащие в таблице ASCII между двумя заданными символами.

A 68
ABCD
0 57
0123456789

3E: IsDigit

Для данного символа, считанного со стандартного ввода, проверьте, является ли он цифрой. Программа должна вывести слово YES , если символ является цифрой, или слово NO .

3F: ToUpper

Напишите функцию char ToUpper(char c) , которая переводит символ в верхний регистр, то есть для строчной буквы латинского алфавита возвращает сооветствующую заглавную букву латинского алфавита, а для остальных символов возвращает тот же символ.

3G: Сменить регистр символа

Напишите функцию char CaseChange (char c) , меняющую регистр символа, то есть переводящую заглавные буквы в строчные, а строчные - в заглавные, остальные символы не меняющие.

3H: Нижний регистр

Дана строка, возможно, содержащая пробелы. Считайте эту строку и переведите все символы этой строки в нижний регистр. Решение оформите в виде функции void ToLower (string & S) , получающей в качестве параметра строку по ссылке и изменяющая символы этой строки.

Для перевода одного символа в нижний регистр напишите отдельную функцию.

Hello, world!
hello, world!

3I: Проверить строки на равенство

Даны две строки (возможно, с пробелами). Проверьте, равны ли они. Если строки равны, выведите слово YES , если строки не равны, выведите слово NO .

Решение оформите в виде функции bool IsEqual(const string &S1, const string & S2) .

После того, как вы решите эту задачу, вам разрешается использовать оператор == для сравнения строк.

Hi
HI
Bye
Bye

3J: Извлечь цифры

Дана строка, возможно, содержащая пробелы. Извлеките из этой строки все символы, являющиеся цифрами и составьте из них новую строку. Решение оформите в виде функции string ExtractDigits (const string & S) , получающей на вход исходную строку S и возвращающую новую строку, содержащую только цифры данной строки.

Указание. Заведите строку Answer , пройдите по всем символам данной строки, при обнаружении цифры добавляйте ее в конец строки Answer , увеличивая ее размер на 1. По завершении цикла верните значение Answer .

3K: Значение выражения - 1

Дана строка, состоящая из n цифр, между которыми стоит n-1 знак операции, каждый из которых может быть либо +, либо -. Вычислите значение данного выражения.

3L: StrToInt

Дана строка, содержащее запись в виде символов целого числа от 0 до 10 9 -1. Определите значение этого числа в виде переменной int. Решение задачи оформите в виде функции int StrToInt (const string & S) .

Функция main должна быть такой:

int main() < string S; cin >> S; cout

3M: IntToStr

Дана целое число от -10 9 +1 до 10 9 -1. Запишите это число в строку, то есть выполните преобразование, обратное предыдущей задаче (но только допускаются отрицательные числа).

Решение задачи оформите в виде функции string IntToStr (int n) .

Функция main должна быть такой:

int main() < int n; cin >> n; cout

4A: Самое длинное слово

In a hole in the ground there lived a hobbit.
ground

4B: Слова с прописной буквы

Дана строка. Измените регистр символов в этой строке так, чтобы первая буква каждого слова была заглавной, а остальные буквы - строчными.

In a hole in the ground there lived a hobbit.
In A Hole In The Ground There Lived A Hobbit.

4C: Шифр Цезаря

В шифре Цезаря каждый символ заменяется на другой символ, третий по счету в алфавите после данного, с цикличность. То есть символ A заменяется на D, символ B - на E, символ C - на F, . символ Z на C. Аналогично строчные буквы заменяются на строчные буквы. Все остальные символы не меняются.

Дана строка, зашифруйте ее при помощи шифра Цезаря. Решение оформите в виде функции void CaesarCipher (string & S) .

In a hole in the ground there lived a hobbit.
Lq d kroh lq wkh jurxqg wkhuh olyhg d kreelw.

4D: Значение выражения - 2

Дано выражение одно из следующих видов: “A+B”, “A-B” или “A*B”, где A и B - целые числа от 0 до 10 9 . Определите значение этого выражения.

100-101

4E: Значение выражения - 3

Дана строка, содержащая одно или более целых чисел от 0 до 10 9 , разделенных знаками “+” или “-”. Вычислите значение этого выражения.

21+7-10

4F: Поиск подстроки

Даны две строки, возможно, содержащие пробелы. Выведите слово YES , если первая строка является подстрокой второй строки или слово NO в противном случае.

hole in the ground
In a hole in the ground there lived a hobbit.
hole on the ground
In a hole in the ground there lived a hobbit.

5A: Look-and-say sequence

Продолжите последовательность чисел:

1 11 21 1211 111221 312211 13112221 1113213211 .
1211

5B: Палиндром - 2

Дана строка, возможно, содержащая пробелы. Определите, является ли эта строка палиндромом, при условии, что заглавные и строчные буквы не различаются, а все символы, не являющиеся буквами, должны быть пропущены. Выведите слово YES , если слово является палиндромом и словов NO , если не является.

Was it a rat I saw?
abca

5C: Удалите лишние пробелы

Строка состоит из одного или нескольких слов, разделенных одним или несколькими пробелами. Удалите из строки лишние пробелы: два и более подряд идущих пробелов замените на один и удалите все пробелы в начале и в конце строки.

Сложность алгоритма должна быть пропорциональная длине исходной строки.

После вывода результата на экран выводите обязательно символ конца строки!

·one··two···three··
one·two·three

5D: Значение выражения - 4

Строка состоит из целых чисел, принимающих значения от 0 до 10 9 , разделенных знаками операций “+”, “-” и “*”. Вычислите значение этого выражения выполняя действия по правилам арифметики.

Тесты к этой задаче закрытые.

js получить код символа

Для получения кода символа можно использовать метод charCodeAt() . Этот метод возвращает числовое значение Unicode для указанного символа в строке. Например, чтобы получить код символа 'А' (русская версия), мы можем написать следующий код:

const str = 'Александр Пушкин'; const code = str.charCodeAt(0); // код символа 'А' console.log(code); // выведет 1040 

В этом примере мы создали константу str , содержащую строку "Александр Пушкин", и затем использовали метод charCodeAt() для получения кода символа 'А', который является первым символом в строке. Полученное числовое значение 1040 является кодом символа 'А' в кодировке Unicode.

Что касается термина Unicode, то это стандарт кодирования текста, который используется для представления символов и письменности всех языков мира. Каждому символу в Unicode сопоставлен свой уникальный код, который состоит из одного или нескольких битов. Этот код может быть использован для представления какого-то символа в виде числа в компьютере. Благодаря стандартной кодировке Unicode, символы из разных языков могут быть корректно отображены на любом компьютере или устройстве.

Как получить код символа который лежит в Char

Используя студию всегда просто вычетал из этой переменной '0' В мингв такое не работает вопрос почему?

Отслеживать
WishMasterUser
задан 17 апр 2012 в 17:05
WishMasterUser WishMasterUser
55 1 1 золотой знак 2 2 серебряных знака 5 5 бронзовых знаков

Фрагмент неработающего кода, в котором не удается получить цифру вычитанием кода нуля из кода этой цифры в студию. Уверен, косяк в чем-то другом.

17 апр 2012 в 17:21

Если нужен сам код символа, то (int)Переменная и получим её код. Если уж (Переменная - '0') совсем не пашет, то можно попробовать ((int)Переменная - (int)'0'). Но, как выше написали, косяк скорее всего в чём-то другом.

17 апр 2012 в 17:31
Приведение типов пашет, -'0' нет - почему?- незнаю но и на том спасибо.
17 апр 2012 в 17:38

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

В char'е лежит не символ, а как раз его код, который интерпретируется системой ввода-вывода как символ. Если нужно вывести это значения в терминале, то можно так

char a = 'a'; std::cout  

Или более культурно:

std::cout (a)  

Отслеживать
ответ дан 17 апр 2012 в 17:25
23.9k 2 2 золотых знака 37 37 серебряных знаков 69 69 бронзовых знаков

char может быть без знака со значениями, непредставимыми в int. Можно unsigned тип здесь использовать. stackoverflow.com/q/17882326/4279

31 окт 2017 в 5:29

стоит упомянуть что c-'0' используется чтобы получить десятичное значение символа с цифрой, а не его код. ( '0'-'0'==0 , но (int)'0' скорее всего не равен нулю, к примеру, если ascii используется, то (int)'0'==0x30 )

31 окт 2017 в 5:35
это также подразумевает: что UCHAR_MAX <= INT_MAX (часто встречается) 1 ноя 2017 в 12:03

Highly active question. Earn 10 reputation (not counting the association bonus) in order to answer this question. The reputation requirement helps protect this question from spam and non-answer activity.

    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

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

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *