Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 261, средняя оценка - 4.61
ordoss
0 / 0 / 0
Регистрация: 29.05.2010
Сообщений: 17
#1

Конвертирование char в int - C++

13.06.2010, 00:21. Просмотров 34532. Ответов 7
Метки нет (Все метки)

Перевожу char в int, но на выходе неверное число, вот упрощений вариант:
C++
1
2
3
4
5
6
7
8
#include <iostream.h>
 
main()
{
    char c = '1';
    int i = static_cast<int>(c);
    cout << i;
}
где ошибка?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1920 / 1529 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
13.06.2010, 00:34     Конвертирование char в int #2
А что по-вашему должно было получиться? Что значит неверное?
ordoss
0 / 0 / 0
Регистрация: 29.05.2010
Сообщений: 17
13.06.2010, 00:39  [ТС]     Конвертирование char в int #3
rangerx, "по-моему" должно было получиться 1, так как использован static_cast, но на выходе 49
А "по-вашему"?
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
13.06.2010, 00:47     Конвертирование char в int #4
Цитата Сообщение от ordoss Посмотреть сообщение
"по-моему" должно было получиться 1, так как использован static_cast
Это с какого перепуга? static_cast в Вашем случае просто приводит переменную типа char к типу int. Значением переменной как был код символа '1', так и остался...
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
13.06.2010, 00:47     Конвертирование char в int #5
ordoss, а по нашему
C++
1
int i = static_cast<int>(c) - 48;
Запомните навсегда - во всех языках программирования(по крайней мере тех, с которыми я знаком) C/C++/C#/Java/J# приведение char к int дает вам ASCII код символа, а не переводит '1' в 1
Market
21 / 21 / 1
Регистрация: 18.03.2010
Сообщений: 19
13.06.2010, 11:41     Конвертирование char в int #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Все напали на вас и не кто толком не объяснил.

char c = '1';

когда вы сделали присваивание в переменную 'c' записался только номер символа "1", то есть предположим так: Вы сохранили номер символа по которому windows хранит номер изображения с симвоолом "1", вы же не можете сохранить изображение в переменную char, по этому при выводе например на консоле вместо номера символа вы увидите сам символ. Надеюсь понятно.

Для перевода символа из номера кода символа есть множество функций вот например
int atoi(const char *str)

можно было написать так:
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
 
main()
{
    char c = '1';
    int i = atoi(c);
    cout << i;
}
Amadara
 Аватар для Amadara
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 99
16.01.2017, 07:25     Конвертирование char в int #7
Цитата Сообщение от Market Посмотреть сообщение
Все напали на вас и не кто толком не объяснил.

char c = '1';

когда вы сделали присваивание в переменную 'c' записался только номер символа "1", то есть предположим так: Вы сохранили номер символа по которому windows хранит номер изображения с симвоолом "1", вы же не можете сохранить изображение в переменную char, по этому при выводе например на консоле вместо номера символа вы увидите сам символ. Надеюсь понятно.

Для перевода символа из номера кода символа есть множество функций вот например
int atoi(const char *str)

можно было написать так:
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
 
main()
{
    char c = '1';
    int i = atoi(c);
    cout << i;
}

зачем было писать то что не работает и даже не должно работать?

011.cpp(8): error C2664: "int atoi(const char *)": невозможно преобразовать аргумент 1 из "char" в "const char *"

C++
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
 
int main()
{
    char c = '1';
    int i = atoi(c);
    std::cout << i;
    return 0;
}

C++
1
2
    int fg = static_cast<int>(hh)-'0'; //явное преобразование чар в инт
    int fg = int(hh)-'0';
но char это только один символ.
поэтому если ввести 77 останется только 7

может кто знает как приводить char к цифрам, может есть готовые функции??
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2017, 08:38     Конвертирование char в int
Еще ссылки по теме:

C++ Как в выделенную память записать поочередно число int, массив char[n], и еще число int
C++ [BCC32 Error] File1.cpp(74): E2285 Could not find a match for 'student1::student1(const char *,int,int)'
C++ Форматирование строк, char to int & int to char
Реализация функции char *padl(const char *string, int len, int c=' ') C++
Конвертирование константной строковой переменной в указатель на char C++

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
6110 / 5713 / 1849
Регистрация: 18.12.2011
Сообщений: 14,590
Завершенные тесты: 1
16.01.2017, 08:38     Конвертирование char в int #8
atoi переводит текстовое представление ЧИСЛА, в двоичное целое.
C++
1
2
3
4
5
6
7
nt main()
{
    char c[] = "1";// массив из 2 символов, первый - код единицы, второй - терминальный ноль
    int i = atoi(c);
    std::cout << i;
    return 0;
}
Yandex
Объявления
16.01.2017, 08:38     Конвертирование char в int
Ответ Создать тему
Опции темы

Текущее время: 09:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru