Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93

Приведение типов

15.10.2011, 19:04. Показов 1982. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код вызова метода:
C++
1
obj.func(char a, char b)
сам метод:
C++
1
2
void func(char a, char b) {
int i = (int)a, int j = (int)b;
В итоге при вызове
C++
1
func('1','2')
i = 50, j = 49
Почему?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.10.2011, 19:04
Ответы с готовыми решениями:

Приведение типов
Как компилятор заставить адекватней приводить типы? (VS2012) Например: int a=-1; unsigned int b=5; if(a>b){...}//Условие...

Приведение типов
Всем привет) Есть массив int a = {2 ,4 ,5 ,6 ,256} Числа располагаются по байтам в памяти так: 1б 2б 3б 4б 2 0 0 0 4 ...

Приведение типов
Необходимо привязать адрес массива double по указателю к адресу структуры. Массив сам создан в другом приложении. Если использовать...

12
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
15.10.2011, 19:08
переменная типа char 49 обозначает символ '1', переменная типа char 50 обозначает символ '2'
0
 Аватар для cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
15.10.2011, 19:15  [ТС]
Цитата Сообщение от kravam Посмотреть сообщение
переменная типа char 49 обозначает символ '1', переменная типа char 50 обозначает символ '2'
Ну я понял, но мне нужно было достичь того, чтобы char '1' преобразовалось в int 1;
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
15.10.2011, 19:16
Для этого есть функция atoi( char * )
C++
1
2
void func(char a, char b) {
int i = atoi( &a), int j = atoi( &b);
Не забудь подключить <string>
0
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
15.10.2011, 19:17
для этого есть функция atoi
0
 Аватар для cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
15.10.2011, 19:18  [ТС]
Поясните тогда, почему не логичен мой выбор касательно приведения типов?

Добавлено через 53 секунды
Функция atoi преобразует строку ascii символов, а один чаровский символ брать не хочет.
0
Android Programmer
141 / 142 / 10
Регистрация: 08.12.2010
Сообщений: 421
15.10.2011, 19:18
Цитата Сообщение от cetrael Посмотреть сообщение
Поясните тогда, почему не логичен мой выбор касательно приведения типов?
потому что char, это тоже по сути целочисленный тип данных.
и привидение к int, возвращает код символа согласно кодировке.
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
15.10.2011, 19:21
Цитата Сообщение от cetrael Посмотреть сообщение
Поясните тогда, почему не логичен мой выбор касательно приведения типов?
тип char - это тот же int
Т.е. в char, как и в int хранятся целые числа
'1'(тип char ) имеет код 49, т.е. в вашем случае происходит преобразование числа 49(типа char) в 49 (типа int).

Цитата Сообщение от cetrael Посмотреть сообщение
Функция atoi преобразует строку ascii символов, а один чаровский символ брать не хочет.
Для этого надо брать адрес объекта как я показал выше.
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
15.10.2011, 19:22
Цитата Сообщение от cetrael Посмотреть сообщение
Поясните тогда, почему не логичен мой выбор касательно приведения типов?
Си-подобный кастинг просто создает новую переменную с другим размером и побитово копирует значение оригинальной, пока хватает места. И никоим образом не преобразовывает значение.

Добавлено через 43 секунды
Цитата Сообщение от Chelioss Посмотреть сообщение
Для этого надо брать адрес char как я показал выше.
А нуль терминатор за Вас Страуструп подставлять будет?
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
15.10.2011, 19:25
Цитата Сообщение от fasked Посмотреть сообщение
А нуль терминатор за Вас Страуструп подставлять будет?
Вот это я забыл, хотя
пример:
C++
1
2
3
4
5
6
7
8
9
10
#include "iostream"
#include <string>
 
int main()
{
    char a = '4';
    std::cout << atoi( &a );
    system( "pause" );
    return 0;
}
работает без ошибок.

Может кто пояснить почему?
0
 Аватар для cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
15.10.2011, 19:27  [ТС]
Цитата Сообщение от fasked Посмотреть сообщение
Си-подобный кастинг просто создает новую переменную с другим размером и побитово копирует значение оригинальной, пока хватает места. И никоим образом не преобразовывает значение.

Добавлено через 43 секунды

А нуль терминатор за Вас Страуструп подставлять будет?
Нуль - терминатор надо было бы подставлять наверное, если бы я преобразовывал строку, а не один символ, нет?
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
15.10.2011, 19:28
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main ( ) { 
 
 char a= '1';
 int b= a- 48;
 printf ("b= %d\n", b);
 getchar ();
 
 return 0;
}
привет!
0
Заблокирован
15.10.2011, 20:23
Цитата Сообщение от cetrael Посмотреть сообщение
Есть код вызова метода:
C++
1
obj.func(char a, char b)
сам метод:
C++
1
2
void func(char a, char b) {
int i = (int)a, int j = (int)b;
В итоге при вызове
C++
1
func('1','2')
i = 50, j = 49
Почему?
Вообще-то, ваш код не должен компилироваться, так как у вас стоит запятая в определении целочисленных переменных, и при этом вы указываете спецификатор типа int.

То есть ваш код на самом деле выглядет так, чтобы было понятно

C++
1
int i, int j;
Почему ваш код компилируется?! Скорей всего это ошибка компилятора.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.10.2011, 20:23
Помогаю со студенческими работами здесь

Приведение типов
в GUI ни int str = static_convert&lt;int&gt;(Edit1-&gt;Text) ни int str = (int)Edit1-&gt;Text не приводит : E2034 Cannot convert...

Приведение типов
Как привести наследника ко второму родителю? class Parent1 { public: int a; int b; int c; }; class Parent2

Приведение типов
Доброго времени суток. Данный кусок кода выделяет целую часть. Потом, вычитая из исходного числа целую часть, получаем дробную. Почему...

Приведение типов
В чем различие привидения типа (type)expression, от type(expression)?

Приведение типов
Есть задача создать список с объектами у которых разные классы, но один базовый предок. Потом нужно перебрать список и если объект одного...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru