Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.98/56: Рейтинг темы: голосов - 56, средняя оценка - 4.98
27 / 26 / 6
Регистрация: 22.03.2014
Сообщений: 277

Разница между char и int

31.12.2014, 15:33. Показов 11773. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Известно что для чар выделяется 1 байт (8 бит) для инт 4 байта (32 бита). Так почему нельзя в чар присвоить 10 и больше до 255 в виде числа? если 10 это 0000 1010 (2)??
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.12.2014, 15:33
Ответы с готовыми решениями:

в чем разница между int a и int *a?
люди подскажите начинающему... чем переменная отличается от указателя? допустим переменные int a char a ? и переменные int *a, char...

в чем разница между int(a) и (int)a?
Собственно в этом и вопрос.

В чем разница между char* и char **
в чем разница между char* и char ** ??

28
27 / 26 / 6
Регистрация: 22.03.2014
Сообщений: 277
31.12.2014, 16:17  [ТС]
Студворк — интернет-сервис помощи студентам
rikimaru2013, taras atavin, я понимаю вы больше знаете чем я, я прошу объяснить почему нельзя в чар присвоить '10' и чтобы вывело 10. вот я и предположил что нельзя потому что там 16 бит. Так разъясните на пальцах почему же всё-таки?
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
31.12.2014, 16:18
Цитата Сообщение от Mikhail1990 Посмотреть сообщение
я прошу объяснить почему нельзя в чар присвоить '10' и чтобы вывело 10
хотя бы потому, что char - это один символ, а число 10 состоит из двух символов! Плюс ко всему в char хранится код символа.
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
31.12.2014, 16:19
Цитата Сообщение от Croessmah Посмотреть сообщение
хотя бы потому, что char - это один символ, а число 10 состоит из двух символов!
Число ни из каких символов не состоит. Из двух символов состоит запись числа 10 цифрами в десятичной системме. Запись того же числа цифрами в двоичной системе состоит из 4-х символов, а словом - из шести символов.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
31.12.2014, 16:22
Цитата Сообщение от taras atavin Посмотреть сообщение
Из двух символов состоит запись числа 10.
умный, умный, верю!
Цитата Сообщение от taras atavin Посмотреть сообщение
цифрами в десятичной системме.
системе.
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
31.12.2014, 16:26
Цитата Сообщение от Mikhail1990 Посмотреть сообщение
rikimaru2013, taras atavin, я понимаю вы больше знаете чем я, я прошу объяснить почему нельзя в чар присвоить '10' и чтобы вывело 10. вот я и предположил что нельзя потому что там 16 бит. Так разъясните на пальцах почему же всё-таки?
Потому что в апострофы заключается символ, а такого символа вообще нет. Если ты хочешь записать туда число, то это делается совсем не так.
C++
1
2
3
4
5
6
7
8
9
char c;
c=10;
std::cout<<(int)c; // Выведет 10
c=0;
std::cout<<(int)c; // Выведет 0
c=2;
std::cout<<(int)c; // Выведет 2
c='0';
std::cout<<(int)c; // Выведет 48
.

Добавлено через 3 минуты
Цитата Сообщение от Mikhail1990 Посмотреть сообщение
taras atavin, так что это есть такое как это понимать? точнее как это понимает компьютер? откуда взялось что 'qw'=29047?
А чёрт его знает.

Добавлено через 21 секунду
Цитата Сообщение от Croessmah Посмотреть сообщение
цифрами в десятичной системме.
системе.
Очепятка.
1
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
31.12.2014, 16:27
Лучший ответ Сообщение было отмечено Mikhail1990 как решение

Решение

Цитата Сообщение от Mikhail1990 Посмотреть сообщение
Так разъясните на пальцах почему же всё-таки?
Ну готовьтесь))))

1) Есть понятие знаковый литерал . Их обозначение 'a' - вместо него компилятор подставить в нужный момент зарезервированую память 0110 0001, которая в int согласно ASCII обозначает для нас 97.

2) в своём примере вы допускаете ошибку логическую - вы в знаковый литерал запихиваете 2 литерала. С таким же успехом можно туда и строку запихнуть и ждать адекватной реакции. А нет! Расмотрим, что получается:
cout << (int)'1'; // выведит 49 - открываем калькулятор, переводим в режим программиста и 49 переводим в биты, получается 0011 0001. Делаем тоже самое и для '0' и '10'.

3) получаем результаты:
C++
1
2
3
'1' (в int 48)       0011 0001
'0' (в int 49)                 0011 0000
'10' (в int 12592)   0011 0001 0011 0000
Специально сделал табуляцию, чтобы вы поняли, что происходит.

P.S. получается для '10' компилятор создаст временную переменную, запишит туда 12592 и выведит вам на экран и сразу её удалит. То, что эта временная переменная будет 16 бит нету гарантий ( мне вообще кажится, что она будет равна машиному слову 32-бита, так как компилятору легче всего с ним работать). Компилятор "съел" вашу ошибку, а должен был наругать вас и очистить все кукисы браузера, чтоб знали в следующий раз! С новым годом! xD
0
27 / 26 / 6
Регистрация: 22.03.2014
Сообщений: 277
31.12.2014, 16:29  [ТС]
то есть
Цитата Сообщение от taras atavin Посмотреть сообщение
'qw'=29047?
это явление понимать как аксиому или читать Страуструпа.

Добавлено через 1 минуту
rikimaru2013, thank you
тоесть
'10'
16 бит как и предположил
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
31.12.2014, 16:38
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
31.12.2014, 16:49
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Компилятор "съел" вашу ошибку, а должен был наругать вас и очистить все кукисы браузера, чтоб знали в следующий раз!
из стандарта:
2.14.3/1
A character literal is one or more characters enclosed in single quotes, as in ’x’, optionally preceded by one of the letters u, U, or L, as in u’y’, U’z’, or L’x’, respectively. A character literal that does not begin with u, U, or L is an ordinary character literal, also referred to as a narrow-character literal. An ordinary character literal that contains a single c-char has type char, with value equal to the numerical value of the encoding of the c-char in the execution character set. An ordinary character literal that contains more than one c-char is a multicharacter literal. A multicharacter literal has type int and implementation-defined value.
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.12.2014, 16:49

Разница между char и signed char
Не понимаю в чем разница между char и signed char, ведь char по умолчанию знаковый. Не комплилируется следующий фрагмент кода: void...

В чем разница между char* и char[]?
Доброго времени суток, наткнулся на одну загвоздку есть такой кусок кода int _tmain(int argc, _TCHAR* argv) { char *a =...

Разница между char[] и char*
Здравствуйте. Провожу небольшую иследовательскую работу по выяснении разницы между char и char*. Пришел к логическому выводу, что char*...

Разница между new char[] и new char[]()
Доброго времени суток. Подскажите пожалуйста разницу, между следующим кодом: char* ch = new char; и char* ch = new...

В чем разница между int main(){} и int main(void){}?
Только недавно начал изучать язык, и появилось несколько вопросов: 1) в чем разница между int main(){} и int main(void){}? 2) в чем...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru