Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
12 / 0 / 0
Регистрация: 11.02.2020
Сообщений: 33

Тип переменной char

19.02.2020, 21:59. Показов 5910. Ответов 55
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Объясните мне, что то я не понимаю, как я понял, этот тип общий, можно как писать, так вводить цифры, но почему то начиная с 10 программа выключается, также можно писать всего одну букву, но при этом даже русскую. Объясните мне, что из себя представляет этот тип. Я не могу понять, это такой тип который служит для ввода одного любого символа?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.02.2020, 21:59
Ответы с готовыми решениями:

Восьмибитный тип переменной (что за тип, но не BYTE и не CHAR?
Вроде давно занимаюсь программированием на С++, но встала проблема... Есть некий массив переменных имеющих 8 битный размер... без знака...

Определять тип вводимой переменной (char или int)
Вообщем изначально дали задание определять тип вводимой переменной (char или int ). Это я выполнил,затем изменили задание, нужно сделать...

Как присвоить к новой char переменной другую char переменную с указателем
Как присвоить к новой char переменной другую char переменную с указателем #include<iostream> int main() { using namespace...

55
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
19.02.2020, 22:19
Char - знаковый тип который может хранить в себе как целочисленные значения, так и ascii, char может хранить целочисленные значения от - 128 до 127, насчёт вылета после ввода 10, как Вы вводите 10? char c ='10'?

Добавлено через 11 минут
И да, char служит для хранения только одного какого-то символа из таблицы ascii
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
19.02.2020, 22:24
Цитата Сообщение от ReYalp Посмотреть сообщение
Char - знаковый тип который может хранить в себе как целочисленные значения, так и ascii, char может хранить целочисленные значения от - 128 до 127

Не по теме:

Не нравятся мне все эти споры с отсылками к чтению стандарта, но всё же скажу.


Это совсем не обязательно. char может быть и беззнаковым, может хранить и больше значений, и всё это дело зависит от реализации.

Цитата Сообщение от ReYalp Посмотреть сообщение
char служит для хранения только одного какого-то символа из таблицы ascii
Только ASCII и никакой другой?
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
19.02.2020, 22:35
valen10, так у него же знаковый char)

Добавлено через 4 минуты
valen10, по сути char это тот же набор бит ка ки другие типы, я не знаю почему он конвертируется автоматически в значение из таблицы ascii, к примеру std::cout выведет значение из таблицы ascii равное числу которое хранится в char, мне самому интересно как это работает)

Добавлено через 3 минуты
Type char is an integral type that usually contains members of the basic execution character set — By default, this is ASCII in Microsoft C++.

The C++ compiler treats variables of type char, signed char, and unsigned char as having different types. Variables of type char are promoted to int as if they are type signed char by default, unless the /J compilation option is used. In this case, they are treated as type unsigned char and are promoted to int without sign extension.
0
12 / 0 / 0
Регистрация: 11.02.2020
Сообщений: 33
19.02.2020, 23:04  [ТС]
Цитата Сообщение от ReYalp Посмотреть сообщение
как Вы вводите 10? char c ='10'?
char ch;
cin>>ch;
cout<<ch;

Программа не крашится, но закрывается моментально, хоть cin.get() стоит везде где нужно и при одиночных символов такое не происходит. Поставил в конце system("pause"). Программа перестала выключаться, но при этом выводит один символ.
0
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
19.02.2020, 23:08
HOBUchEK, а разве 10 - цифра? Для начала важно понимать, что char - символ, цифра это тоже символ, но 10 - два символа, '1' и '0'.
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
19.02.2020, 23:09
HOBUchEK, какой символ выводится? Символ скорее всего выводится соответствующий числу 10 в ascii

Добавлено через 38 секунд
elenayagubova, char может хранить числа
0
12 / 0 / 0
Регистрация: 11.02.2020
Сообщений: 33
19.02.2020, 23:09  [ТС]
Цитата Сообщение от elenayagubova Посмотреть сообщение
а разве 10 - цифра?
Я про это и спрашиваю, char выводит только один символ?
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
19.02.2020, 23:14
Цитата Сообщение от ReYalp Посмотреть сообщение
не знаю почему он конвертируется автоматически в значение из таблицы ascii, к примеру std::cout выведет значение из таблицы ascii равное числу которое хранится в char
operator<< (std::ostream &, char) для него перегружен таким образом.

Цитата Сообщение от ReYalp Посмотреть сообщение
Variables of type char are promoted to int as if they are type signed char by default
Из документации от Microsoft? В таком случае это описывает только одну конкретную реализацию. Если заглянем в стандарт, то:

Type char is a distinct type that has an implementation-defined choice of “signed char” or “unsigned char” as its underlying type.
Диапазоны значений целых типов указываются как степени 2: от https://www.cyberforum.ru/cgi-bin/latex.cgi?-2^{N-1} до https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{N-1} -1 для знаковых и от 0 до https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{N}-1 для беззнаковых, где N - range exponent. Минимальное значение N для signed/unsigned char равно 8. Но может быть и больше.

Working Draft, Standard for Programming Language C++ N4791, стр. 62-63
0
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
19.02.2020, 23:14
ReYalp, нет, не при вводе с клавиатуры. Код символа является числом, да, и над этим числом можно производить соответствующие операции, но при вводе ожидается символ, а при выводе выводится символ.
HOBUchEK, да, char хранит один символ.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
19.02.2020, 23:20
Цитата Сообщение от ReYalp Посмотреть сообщение
Char - знаковый тип который может хранить в себе как целочисленные значения, так и ascii
во-первых, char (c++ - регистрозависимый)

во-вторых, он и не знаковый и не беззнаковый, он - char

вот это - три разных типа данных:
char
signed char
unsigned char

и как для любых разных типов можно сделать перегрузку:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
void foo(char)          noexcept { ::std::cout << "char\n";          }
void foo(signed char)   noexcept { ::std::cout << "signed char\n";   }
void foo(unsigned char) noexcept { ::std::cout << "unsigned char\n"; }
 
int main()
{
    char a = 'a';
    signed char b = 'b';
    unsigned char c = 'c';
    foo(a);
    foo(b);
    foo(c);
}
а третьих: какое ещё ascii?
char хранит целочисленные значения и ничего более.

как именно будут интерпретироваться эти значения - да как угодно,
в зависимости от.
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
19.02.2020, 23:24
char - целочисленный тип, диапазон знакового (signed char или просто char) [-128;127], диапазон беззнакового
(unsigned char) [0;255]. оператор вывода в поток обработает переменную типа char так: вместо вывода числа выведет символ из текущей кодовой таблицы.
пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int main()
{
    char x=65;
    cout << x << "\n"; // выведет A (код символа A в таблице ASCII равен 65)
    
    char y='C';
    cout << y << " " << int(y) << "\n"; // выведет С 67 (код символа С в таблице ASCII равен 67)
    
system("pause");
return 0;
}
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
19.02.2020, 23:26
hoggy, hoggy, где написано что он целочисленный? Просто ради интереса где это читать
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
19.02.2020, 23:29
Yetty, char может быть как знаковым, так и беззнаковым. И даже если char знаковый, то это не signed char.
char, signed char, unsigned char - три разных типа.

Добавлено через 2 минуты
ReYalp, https://eel.is/c++draft/basic.fundamental
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
19.02.2020, 23:35
hoggy, знаковый я имел ввиду символьный кстати, тут ошибся с описанием

Добавлено через 1 минуту
elenayagubova, кстати вот Вам и доказательства что char хранит числа
0
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
19.02.2020, 23:37
ReYalp, я где-то говорила, что не хранит? Любой тип вообще хранит числа)
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
19.02.2020, 23:40
elenayagubova, я написал "char может хранить числа", на что Вы ответили нет
0
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
19.02.2020, 23:42
Я написала
Цитата Сообщение от elenayagubova Посмотреть сообщение
нет, не при вводе с клавиатуры
Нельзя в переменную типа char записать число, введенное пользователем с клавиатуры
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
19.02.2020, 23:49
elenayagubova, это заслуга средств ввода, а не char'а. char, кстати, может хранить лишь часть символа, например, если текст в кодировке utf-8.
0
337 / 237 / 103
Регистрация: 26.03.2019
Сообщений: 407
19.02.2020, 23:51
Croessmah, тем не менее важно понимать, что в этом случае
Цитата Сообщение от HOBUchEK Посмотреть сообщение
char ch;
cin>>ch;
при вводе 10 в ch запишется '1', а не 10.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.02.2020, 23:51
Помогаю со студенческими работами здесь

Не могу преобразовать тип char в тип double
Вся загвоздка в str1 и str2; #include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include&quot;stdlib.h&quot; #include &quot;cstdlib&quot; #include...

Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ?
Вопрос такой, почему в методе setnamedisc нужно использовать char *s для установки значения, а при возвращении значения в методе...

Присвоить переменной char m значиние переменной int i..
Как присвоить переменной char m значиние переменной int i таким образом ? int main() { char m; int i = 5; m = i; # ( что бы...

тип char
Подскажите плз, почему сортировка не работает с типом char. С типом int, элементы сортируются. void InsertSort(v1 a) { for (char i...

Тип char и указатели
Вопрос... Тип может хранить только символы, или строки тоже? Если только символы, то почему этот код работает?: ... void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru